gpt4 book ai didi

java - 奇怪的泛型问题

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:29 26 4
gpt4 key购买 nike

有谁知道为什么下面的代码不能编译并且在编译期间我得到不兼容的类型异常?

public class Test<T> {

public static void main(String[] args)
{
// using Test<?> solves the compilation error
Test test = new Test();

// getting error incompatible types:
// found : java.lang.Object
// required: java.lang.Integer
Integer number = test.getDays().get(0);
}


private List<Integer> getDays() {
return new ArrayList<Integer>();
}

}

为什么使用带有无限通配符的测试可以解决这个问题?我使用的是 Java 版本 1.6.0_12

最佳答案

我将问题解释为为什么不 test.getDays()返回 List<Integer>当返回类型不依赖于类型参数时,T

当您创建一个变量,该变量是对 Test 实例的原始引用时编译器会丢弃所有通过该变量访问的泛型(为了向后兼容)。

因为 test没有它的类型 <T>指定这也意味着 <Integer>对于 getDays被丢弃。

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

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