gpt4 book ai didi

java - 泛型转换问题

转载 作者:太空狗 更新时间:2023-10-29 22:39:43 24 4
gpt4 key购买 nike

这是我的问题:给定这些类(class)

class A {}
class B extends A {}

此代码编译:

    List<Class<? extends A>> list = Arrays.asList(B.class, A.class);

这不是:

    List<Class<? extends A>> anotherList = Arrays.asList(B.class);

什么给了?


更新:此代码在 Java 8 中编译。显然,由于“改进的类型推断”。

最佳答案

在第一个示例中,Arrays.asList() 的推断类型电话是List<Class<? extends A>> , 这显然可以分配给相同类型的变量。

在第二个例子中,右边的类型是List<Class<B>> .同时 Class<B> 可分配给Class<? extends A> , List<Class<B>> 不可分配给List<Class<? extends A>> .它将分配给 List<? extends Class<? extends A>> .

这样做的原因与 List<B> 的原因相同。不可分配给 List<A> .如果是,它将使以下(非类型安全)代码成为可能:

List<Class<B>> bb = new ArrayList<B>();
List<Class<? extends A>> aa = bb;
aa.add(A.class);

关于java - 泛型转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com