![](/img/trans.png)
[英]Incompatible Types when when using a list of generic class in an interface
[英]Incompatible types when List of generic objects constructed outside of method call
以下代碼將無法編譯
import java.util.List;
class Scratch {
public static void main(String[] args) {
Foo<Object> foo = new Foo<>();
Bar bar = new Bar();
bar.bar(List.of(foo)); // Okay
List<Foo<Object>> foos = List.of(foo);
bar.bar(foos); // Error
}
static class Foo<T> {}
static class Bar {
void bar(List<Foo<?>> foos) {}
}
}
行bar.bar(foos);
遇到此錯誤:
不兼容的類型: java.util.List<Scratch.Foo<java.lang.Object>> 無法轉換為 java.util.List<Scratch.Foo<?>>
為什么在bar()
方法調用之外構造List<Foo<?>>
時類型不兼容?
您應該修復<?>
,因為Foo<?>
和Foo<Object>
不一樣。
void bar(List<Foo<Object>> foos) {}
除了通配符之外,您還可以在方法簽名中使用泛型類型,它仍然允許任何 Object 類型,即以下:
<T> void bar(List<Foo<T>> foos)
代替
void bar(List<Foo<?>> foos)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.