泛型类引用

  • 本文关键字:引用 泛型类 java
  • 更新时间 :
  • 英文 :


请查看以下代码。为什么即使 Integer 继承自 Number 也会抛出此错误,为什么在 '?使用扩展数字"。

public class testGeneric
  {
    public static void main(String[] args)
        {
          Class<Integer> classint = int.class;
          Class<Number> classnum1 = int.class;// Error Type mismatch: cannot convert from  
                                              // Class<Integer> to Class<Number>
          Class<? extends Number> classnum2 = int.class;
        }
  }

型类型中没有协方差(如果这是我正在寻找的词(。

它们需要完全匹配。

Class<Number>只能由Number.class分配。

如果要允许子类(或超类(,则必须使用 extendssuper

Class<? extends Number>可以服用Integer.class(其中包括Long.classNumber.class(。

Class<? super Number>可以采取Number.classObject.class


这与能够在子类实例上工作的泛型方法不同。

例如,您可以将Integer添加到List<Number>中,但这不会使List<Number>可分配给List<Integer>(反之亦然(。


对象实例可以在需要超类的地方使用,但泛型类型不能。

根据我的理解

整数和整数正在发生Autoboxing and Unboxing,但数字和整数不可能。

有关自动装箱的信息,请参阅 https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

最新更新