我想了解的ArrayList并在这个过程中已经意识到我还需要了解仿制药,原料类型和更多类型转换。我读了甲骨文的教程,这是他们给了仿制药的原因是有帮助的例子:
没有泛型下面的代码片段需要铸造:
List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);
我不明白的是为什么类型转换是必要的,因为在这里,只要我可以告诉“list.get(0)”的类型为“字符串”之前和之后类型转换。我使用的代码在这里检查的类型,不知道它的正确与否。
List list = new ArrayList();
list.add("hello");
Object obj= list.get(0);
Class cls=obj.getClass();
String answer = cls.getSimpleName();
System.out.println(answer);
String s = (String) list.get(0);
Object obj2= list.get(0);
Class cls2=obj2.getClass();
System.out.println(cls2);
String answer2 = cls2.getSimpleName();
System.out.println(answer2);
所以,我要求一个解释,为什么类型转换是需要在这里和一般的非这里一般-ED的ArrayList。
在运行时类型为String
,但是编译时类型为Object
。编译器不知道什么是原ArrayList
持有,所以当你调用get()
它分配的编译时类型Object
。一个Object
不能被直接分配给String
,从而铸造。
演员阵容是说编译器的开发者的方式,“你认为这是一个列表Object
S,但请相信我,我拉出的事情绝对是一个String
。”
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句