При миграции AWS Java SDK V1 -> V2 произошла ошибка компиляции ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
При миграции AWS Java SDK V1 -> V2 произошла ошибка компиляции

Сообщение Anonymous »

Я пытаюсь перейти на 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

Вернуться в «JAVA»