理解java泛型

时间:2014-01-03 23:16:28

标签: java generics

在以下作业中,我需要使用List<? extends Number>

List<? extends Number> list = Arrays.asList(1.2, 3, 4.5);

虽然Arrays.asList(1.2, 3, 4.3)的类型为List<Number & Comparable<?>>,但考虑List java中的genertic类型是不变的,而使用通配符?,它可以变为逆变。因此,如果它是逆变的,Number & Comparable<?>Number的子类型,那么List<Number & Comparable<?>>List<? extends Number>的超类型。那么这是不正确的,因为它将超类型分配给子类型(向下转换)!

我的理解在哪里错了?

1 个答案:

答案 0 :(得分:0)

它不起作用。如果打开编译器警告,您将看到编译器正在抗议正在执行未经检查的转换。编译器告诉你,它无法在编译时验证你推断的强制转换是否正确。