为什么铸造或泛型的使用需要在Java中添加字符串到的ArrayList?

罗纳德:

我想了解的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。

约翰Kugelman:

运行时类型String,但是编译时类型Object编译器不知道什么是原ArrayList持有,所以当你调用get()它分配的编译时类型Object一个Object不能被直接分配给String,从而铸造。

演员阵容是说编译器的开发者的方式,“你认为这是一个列表ObjectS,但请相信我,我拉出的事情绝对是一个String。”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么需要在JAVA的void静态方法签名中声明泛型?

Python为什么要在字符串中添加特殊字符?

为什么需要在createToken方法中传递字符串?

为什么我们需要在字符串中获取单词

为什么不能使用Swift的字符串构造函数将泛型转换为字符串?

为什么将字符串的arraylist对象传递给泛型方法时Java推断可序列化

为什么我们需要在Java中对ArrayList使用迭代器?

我需要在java中拆分字符串吗?

在java泛型中获取字符串的长度

如何使用Java泛型从字符串中恢复T

为什么我们需要在 python 中的 f 字符串周围放置撇号?

为什么需要在类python(self.x = x)中使用带点的任何字符串带有self?

为什么在使用 fgets() 时,我们需要在声明时删除字符串 -1 ?

为什么需要在Python的.format方法中进行显式字符串转换?

泛型被泛化为 TypeScript 中的字符串

为什么我们需要在打字稿中编写函数的泛型?例如函数 fill<IDontKnow>(){}

如果我想使用 for 循环删除字符,为什么需要将原始字符串复制到新变量中?

为什么putInt在Android Java中需要一个字符串?

Chrome为什么要在包含Javascript文件后添加查询字符串参数?

为什么JSON在我的字符串中添加+?

为什么在字符串填充中“插入”比“添加”更快?

为什么我不能将Java字符串值从zscript传递到ZK中的javascript?

为什么需要在Azure管理门户中而不是在WebJob的App.config中为WebJob配置连接字符串?

为什么我需要Typescript中的泛型

Java泛型-需要在对象映射器中泛化A.class

使用HashMAP到ArrayList的字符串

我需要在字符串中写OR语句

需要在SQL Server中透视字符串值

需要在“响应数据”中检查“字符串”