考虑以下代码:
MyClass myClass= new MyExtendedClass();
myClass.method();
其中 MyExtendedClass 是 MyClass 的子类型。正如我在第二个字符串编译器上的编译状态编译器上所理解的那样,它检查method()
了源代码中的存在方法MyClass
。是正确的推理吗?现在考虑
List<Integer> ints= new ArrayList<Integer>();
ints.add(2);
List<? extends Integer> lst = ints;
lst.get(0);
我在哪里可以看到的来源List<? extends Integer>
?现在考虑:
new ArrayList<Integer>().getClass().equals(
new ArrayList<String>().getClass());// return true.
所以在运行时类ArrayList<Integer>
和ArrayList<String>
是相等的,但在编译状态下它是不正确的。为什么?ArrayList<String>
和的来源在哪里ArrayList<Integer>
?