gpt4 book ai didi

java - ClassName 的原始类型是否等同于 ClassName
转载 作者:行者123 更新时间:2023-12-01 23:26:36 25 4
gpt4 key购买 nike

标题非常不言自明。请问原始类型,例如ArrayListArrayList<Object> 的行为相同?

最佳答案

不完全是。看看

  MyClass myClass1 = new MyClass<Integer>();
//MyClass<Object> myClass2 = new MyClass<Integer>();//compilation error
MyClass<?> myClass3 = new MyClass<Integer>();//this time it compiles

myClass1.setter(1);
//myClass3.setter(1);//compilation error

如果是myClass2它不会编译,因为您声明引用 Objects 的持有者但您是 Integers 的持有者和 generics are not covariant

如果你改变<Object><?>通配符如 myClass3您将无法将其 setter 与任何对象(除了 null 之外)一起使用,例如 myClass3.someSetter(1)因为MyClass<?>可引用MyClass<Anything>可以容纳任何类型的对象,并传递 1Strings的持有者不安全。

关于java - ClassName 的原始类型是否等同于 ClassName<Object>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892623/

25 4 0