gpt4 book ai didi

java - 为什么通用数组代码可以干净地编译?

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:10 24 4
gpt4 key购买 nike

重构遗留代码并开始使用泛型后,我发现函数看起来像这样:

T[] splitXXX() {
//blah blah
}

产生大量的类转换异常,因为 jdk 并不真正支持泛型类型的数组。我想知道 - 为什么这段代码可以在 Java 中干净地编译?它与向后兼容性有关吗? (如果我能在编译时而不是在运行时发现这个错误,那会为我节省很多调查时间)。我错过了什么?

最佳答案

如果类型变量只出现在返回类型中,那是相当危险的。例如

public static <T> T foo(){ ... }

// usage
String s = foo();
Integer i = foo();

编译器认为,如果程序员将 T 分配给 String,他可能知道自己在做什么,所以可以很安全地推断出 T=String 。哎呀,真的没有任何限制,foo() 的结果可以分配给任何类型。

但是程序员可能并不总是知道他在做什么;他依靠强类型编译器来捕获他可能无意中犯下的一些打字错误。

关于java - 为什么通用数组代码可以干净地编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13709605/

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