Я пытаюсь перейти на AWS SDK Ec2 V2 и получаю ошибку компиляции:
error: types SdkBuilder and Builder are incompatible;
both define build(), but with unrelated return types
where CAP#1,CAP#2 are fresh type-variables:
CAP#1 extends CopyableBuilder from capture of ?
CAP#2 extends ToCopyableBuilder from capture of ?
Похоже, это каким-то образом связано с определением сборщиков, где несколько родительских интерфейсов определяют метод build()
DescribeInstancesRequest.Builder
-- Ec2Request.Builder: Ec2Request build();
-- AwsRequest.Builder: AwsRequest build();
-- CopyableBuilder
-- SdkBuilder: DescribeInstancesRequest build();
Это странно, как это сделано в AWS SDk V2, поскольку
я не могу создать подобную иерархию из-за
ошибки «методы имеют несвязанные типы возвращаемых данных».
'build()' в 'SdkBuilder' конфликтует с 'build()' в 'Parent.Builder'; методы имеют несвязанные типы возвращаемых значений
public class Child implements ToCopyableBuilder {
public Builder builder() {
return new BuilderImpl();
}
private static final class BuilderImpl extends Parent.BuilderImpl implements Builder {
public Builder value(String val) {
return null;
}
public Child build() {
return new Child();
}
}
public interface Builder extends Parent.Builder, CopyableBuilder {
Builder value(String val);
}
}
class Parent {
protected Parent(Builder builder) {}
protected abstract static class BuilderImpl implements Builder {
protected BuilderImpl() {}
protected BuilderImpl(Parent parent) {}
}
public interface Builder {
Parent build();
}
}
interface ToCopyableBuilder {}
interface CopyableBuilder
extends SdkBuilder {}
interface SdkBuilder {
T build();
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... tion-error