2 m0 37676512 m0_37676512 于 2017.09.09 10:01 提问

java,我使用泛型数组的时候提示unchecked cast,下有图片代码

图片说明

3个回答

Small_Mouse0
Small_Mouse0   Rxr 2017.09.09 10:35
已采纳

【Array.newInstance()】这个方法返回的是Object,,向上转型很自然,向下转型就需要强转
由于这个后面传入的是class,也就是通过 class来创建实例(这个是运行时才能知道类型的)

所以说程序给报个异常也是理所应当,,

【解决方法】题主可以不适用【Array.newInstance()】
自己写一个创建实例的方法,,难度不是很大吧??

有问题还可以追问。

Small_Mouse0
Small_Mouse0 回复小鼠标丶: e[0] = (E) type.newInstance();,,,,类似于这种就可以创建,,没有警告但是可能抛出两个异常,,反射new实例有异常不奇怪【throws InstantiationException, IllegalAccessException】
11 个月之前 回复
Small_Mouse0
Small_Mouse0 回复龙猫12138: 对
11 个月之前 回复
m0_37676512
m0_37676512 所以我应该自己写一个类,这个类可以创建一个泛型类型的实例,然后再多次运行这个类以达到Array.newInstance()的效果。是这样吗?
11 个月之前 回复
m0_37676512
m0_37676512 我大概理解,意思就是这个Array.newInstance()方法创建实例的时候,java不确定能不能创建这样一个类型的实例,是吗?
11 个月之前 回复
qq_36687479
qq_36687479   2017.09.09 10:18

代码我不用看,就单单你最后的问题,一个String类型把它转成Object类型之后,能直接转换成int类型吗?

caozhy
caozhy 这说得没错啊,点踩的是什么心态
11 个月之前 回复
u011315960
u011315960   2017.09.11 11:11

泛型的作用:检查操作的类型是否与希望的类型相匹配,帮助开发者审查操作的失误。

这里以List举例:泛型String表示的是List中只能加入String类型,否则就会报错。这里要注意,泛型的作用范围是List的内部的内容,而不是List本身。

你的强转会报错是因为你是对List进行了强转,泛型的作用已经超出了他的范围,所以这个会报错。

如果你想取消这个错误你可以自己写一个for循环,依次把List中的对象放入到数组中。

u011315960
u011315960 不好意思,我刚发完评论,发送我看错代码了,我尝试了一下,发现数组是不支持泛型的,所以也没有找到解决问题的办法,如果你需要泛型的话 ,我觉得考虑考虑使用集合类把。
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
处理MyEclipse中泛型转换的警告 之 隐藏方法
类似于:List fileItems = (List) fileload.parseRequest(request); fileload.parseRequest返回的是List,cast的时候会出Type safety: Unchecked cast from List
消除unchecked cast Warning
在JAVA使用: Map itemMap = (Map) session.getAttribute("itemMap"); 经常会出现:unchecked cast Warning 原因是:你的调用可能出现的不是Map类型的值。 如果需要修改,添加注释:@SuppressWarnings("unchecked")Map itemMap = (Map) session.getAttribut
Java 泛型总结(二):泛型与数组
(转载)https://segmentfault.com/a/1190000005179147 简介 上一篇文章介绍了泛型的基本用法以及类型擦除的问题,现在来看看泛型和数组的关系。数组相比于Java 类库中的容器类是比较特殊的,主要体现在三个方面: 数组创建后大小便固定,但效率更高 数组能追踪它内部保存的元素的具体类型,插入的元素类型会在编译期得到检查 数
EffectiveJava(24)使用@SuppressWarnings("unchecked")消除非受检警告
…..使用泛型编程时,会遇到许多编译器警告,如:非受检强制转化警告,非受检方法调用警告,非受检普通数组创建警告,费受精转换警告.这次的内容就是遇到这些警告的时候你该怎么办. PS:非受检警告就是代码上黄色的感叹号 1.首先,要尽可能地通过泛型控制消除每一个非受检警告.这意味着你将不会在运行时出现ClassCastException异常 2.如果无法消除警告,同时可以证明引起警告
【Java书写】@SuppressWarnings("unchecked") 以及强制转换和泛型的疑问
项目中有如下代码: private GeneratedMessage msg; @SuppressWarnings("unchecked") public T getMsg() { return (T) msg; } 问题①@SuppressWarnings("unchecked")应该出现的场合,            SuppressWarnings是告诉编
Java - Warning: Unchecked cast from object to array list
Warning: Unchecked cast from object to array list本文地址:http://blog.csdn.net/caroline_wendy警告发生在对象(Object)强制转换为数组(ArrayList)类型,如:infos = (ArrayList) data.getData();因为对象转换为数组类型,未经过检查,有一定危险.使数组对象强制转换,如Arr
泛型的安全警告
在泛型应用中最好在声明类对象时制定好其内部数据类型,如Info,如果不指定类型,这样用户在使用这样的类时,就会出现不安全操作的警告信息。 【不指定泛型类型】 class Info { private T var; public T getVar(){ return var; } public void setVar(T var){
◎SuppressWarnings("unchecked")注解的作用
解释一:           屏蔽某些编译时的警告信息          在强制类型转换的时候编译器会给出警告         加上        程序代码        @SuppressWarnings("unchecked")        就不会警告了 解释二: 注释类型 当你的编码可能存在警告时,比如安全警告,可以用它来消除 api中是
java中的类型安全问题-Type safety: Unchecked cast from Object to ...
Type safety: Unchecked cast from Object to ...
Java泛型原理笔记
T 到底是什么东东 Java泛型的语法相当的别扭,看到一个这样的写法,感觉到很神奇,正好研究下Java泛型是怎么实现的。 public class A{ public static void main(String[] args) { A a = new A(); a.test(); String r = a.test(); } public T test() {