java 将Object转成List

List<byte[]>taskList=(ArrayList<byte[]>)obj;出现警告:Typesafety:UncheckedcastfromObjectto... List<byte[]> taskList = (ArrayList<byte[]>)obj;
出现警告:Type safety: Unchecked cast from Object to ArrayList<byte[]>

请问大侠,如何解决???? 原因又是什么???
展开
 我来答
yihla5739
高粉答主

推荐于2019-09-17 · 每个回答都超有意思的
知道答主
回答量:149
采纳率:100%
帮助的人:4.6万
展开全部

通常我们遇到这个问题是出现在Object转化为目标类型时,这个转化并不是安全的。

这个问题普遍认为因为使用了jdk1.5或者1.6的泛型,request.getAttribute("***")得到的是一个默认为Object的类型,当把他们转成List<***>时,编译器认为有可能会出错,所以提示这个类型安全。

以下是大家普遍用的取消警告的方法(不过危险并没有解除):

一、方法上添加@SuppressWarnings("unchecked")

二、Eclipse的Window->Preferences->Java->Compiler->Errors/Warning->Generic types中Unchecked generic type operation设置为Ignore。

三、Eclipse的Window->Preferences->Java->Compiler将Compiler compliance level 设置为小于1.5

扩展资料:

@Override

public List<LocalObtMind> listByProperties(int start, int number) throws Exception {

String sql = "select * from (SELECT "

+ "decrypt_des(s.ddatetime, 'szmb#1601') ddatetime,"

+ "decrypt_des(s.obtid, 'szmb#1601') obtid,"

+ "decrypt_des(s.wd2df, 'szmb#1601') wd2df,"

+ "decrypt_des(s.t, 'szmb#1601') t,"

+ "decrypt_des(s.p, 'szmb#1601') p,"

+ "decrypt_des(s.hourr, 'szmb#1601') hourr "

+ "FROM t_LocalObtMind s) order by ddatetime desc ";

Query query = em.createNativeQuery(sql.trim());

query.setFirstResult(start);

query.setMaxResults(number);

List<Object> list = null;

List<LocalObtMind> list2 = new ArrayList<LocalObtMind>(); 

try{

list = query.getResultList();

for (int i = 0; i < list.size(); i++) {  

LocalObtMind localObtMind = new LocalObtMind();  

Object[] obj = (Object[])list.get(i); 

localObtMind.setDdatetime(obj[0].toString());

localObtMind.setObtid(obj[1].toString());

localObtMind.setWd2df(obj[2].toString());

localObtMind.setT(obj[3].toString());

localObtMind.setP(obj[4].toString());

localObtMind.setHourr(obj[5].toString());

list2.add(localObtMind);  

}

}catch(Exception e){

e.printStackTrace();

}

return list2;

}

licumn
2012-10-09 · TA获得超过107个赞
知道答主
回答量:28
采纳率:0%
帮助的人:12.6万
展开全部
这是一个类型转换警告,提示未经过检查。但是如果能够确定obj自身的真实类型是ArrayList<byte[]>的话,那么这样的转换是没有问题的,警告可以忽略。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jingyening
2012-10-09
知道答主
回答量:15
采纳率:0%
帮助的人:3.1万
展开全部
没事,因为向下转型本身就有安全隐患。只要你确定这个obj实际上是List类型就行。不然运行时会报异常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
要发生的事
2012-10-09 · 超过14用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:11.6万
展开全部
你写错了,你要先把你要用到的ArrayList new一个出来 然后赋值
类似于这样写:
List list=new ArrayList();
list.add(obj);
类似于这样!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yun无语了
2012-10-09 · 超过19用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:48.3万
展开全部
警告可以忽略,但是你要确定obj可以强制转换成 List<byte[]>。否则会报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(15)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式