猿问

如何在java中将Object转成List呢?求指教!

List<byte[]> taskList = (ArrayList<byte[]>)obj;
出现警告:Type safety: Unchecked cast from Object to ArrayList<byte[]>
请问大侠,如何解决???? 原因又是什么???

12345678_0001
浏览 665回答 2
2回答

慕容708150

警告可以注意下,但是不用太过理会。你这里obj有可能不是ArrayList,若不是的话就会发生转换异常。保险起见可以加上类型判断if (obj instanceof ArrayList<?>)List<byte[]> taskList = (ArrayList<byte[]>)obj;}

有只小跳蛙

通常我们遇到这个问题是出现在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扩展资料:@Overridepublic 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>();&nbsp;try{list = query.getResultList();for (int i = 0; i < list.size(); i++) {&nbsp;&nbsp;LocalObtMind localObtMind = new LocalObtMind();&nbsp;&nbsp;Object[] obj = (Object[])list.get(i);&nbsp;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);&nbsp;&nbsp;}}catch(Exception e){e.printStackTrace();}return list2;}
随时随地看视频慕课网APP

相关分类

Java
Python
我要回答