gpt4 book ai didi

java - 为什么 Java 泛型不允许对泛型类型进行类型转换?

转载 作者:搜寻专家 更新时间:2023-10-30 21:40:23 25 4
gpt4 key购买 nike

public class Main {

public static <T> void foo(T[] bar) {
double d = (double) bar[0]; // Error : incompatible types
}

public static void main(String[] args) {
int[] int_buf = new int[8];
foo(int_buf);
}
}

问题在代码中指出。

为什么 Java 泛型不允许对泛型类型进行类型转换?

最佳答案

问题比这更深。即使没有您突出显示的行,该程序也已损坏:

public class Main {
public static <T> void foo(T[] bar) {
// do nothing
}

public static void main(String[] args) {
int[] int_buf = new int[8];
foo(int_buf); <-- problem is here
}
}

Java泛型只支持引用类型作为类型参数;通用方法 foo() 可以重写如下:

<T extends Object> void foo(T[] bar) { ... }

这就是你的问题:没有 T 扩展 Object 使得 int[]T[]

其次,转换也失败的原因是我们对T一无所知,所以我们不知道存在从T的转换双

关于java - 为什么 Java 泛型不允许对泛型类型进行类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36213729/

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