gpt4 book ai didi

Java 泛型 - 无法从 扩展到

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:02 26 4
gpt4 key购买 nike

为什么下面的代码会报编译错误?

public MyObject(Builder<? extends MyObject> builder) {
// Type mismatch: cannot convert from MyObject.Builder<capture#5-of ? extends MyObject> to MyObject.Builder<MyObject>
Builder<MyObject> myObjBuilder = builder;
}

如果 Builder 类型是 MyObject 的子类,那么为什么不能将构建器分配给 MyObject 类型呢?我需要这样做,因为我无法将 MyObject 类型的对象与构建器一起使用。例如看一下这段代码:

public MyObject(Builder<? extends MyObject> builder) {
// The method getData(capture#8-of ? extends MyObject) in the type Builder<capture#8-of ? extends MyObject> is not applicable for the arguments (MyObject)
this.data = builder.getData(this);
}

我觉得这应该被允许。还是我在这里遗漏了什么?有没有办法在不将生成器转换为 (Builder<MyObject>) 的情况下执行此操作?并且必须使用@SuppressWarnings?

另请注意,我需要 Builder 为 <? extends MyObject>因为 MyObject 及其 Builder 将被子类化(因为它是抽象的)。

感谢您的帮助!

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com