gpt4 book ai didi

Java转换整数到字符串不一致

转载 作者:行者123 更新时间:2023-12-01 22:25:41 26 4
gpt4 key购买 nike

为什么从整数集合到字符串集合的转换有效,但当我实际上必须将整数转换为字符串时却失败了?为什么不早点失败/捕获它?在我下面的例子中

static <T extends List<?> >
void testConversion(T... args)
{
**// Didnt catch here?**
List<String>[] slarray = (List<String>[])args;
System.out.printf("Value is %s\n", slarray[0].get(0));
**// Didnt catch here?**
List<String> slist = (List<String>)args[0];
// FAIL runtime exception
String s2 = slist.get(0);
// FAIL exception
String s = slarray[0].get(0);
}

public static void main( String[] args )
{
testConversion(Arrays.asList(11,12), Arrays.asList(21,22));
}

最佳答案

这是因为 Java 泛型是编译时的事情,实际类型在程序运行时会被删除。

您将 T 定义为“任意列表”。然后,您将对“任何列表”的引用转换为“字符串列表”。这种类型转换可能会起作用(因此,它不是编译时错误),因此编译器不会提示,而是将问题留给运行时系统。

在运行时,它只是对List的引用。因此,运行时环境也不会提示 - 您强制转换 List 数组并将其分配给 List 数组,此时实际类型将被删除。

但是当涉及到获取实际值时,运行时环境可以发现该值实际上无法分配给 String,因此会抛出异常。

关于Java转换整数到字符串不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28818473/

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