如何清单列表转换。我试图通过如何转换列表<Object>列出<Dog>在Java中
List<Object> obj = (some initialization)
List<Dog> dog =(List<Dog>)obj;
这样做所以这会引发错误
ERROR: Cannot cast from List<Object> to List<Dog>
凡
List<Object>
我从Hibernate查询
FROM DOG
如何清单列表转换。我试图通过如何转换列表<Object>列出<Dog>在Java中
List<Object> obj = (some initialization)
List<Dog> dog =(List<Dog>)obj;
这样做所以这会引发错误
ERROR: Cannot cast from List<Object> to List<Dog>
凡
List<Object>
我从Hibernate查询
FROM DOG
演员的工作,如果你使用一个List<?>
代替:
List<?> list = (some initialization);
List<Dog> dog = (List<Dog>)list;
如果你有一个List<Object>
你仍然可以将它转换为一个List<Dog>
List<Object> list = (some initialization);
List<Dog> dog = (List)list;
当然,这应该只在您确定列表中确实包含Dog
对象(例如作为来自您的HQL查询FROM Dog
的结果值)。
很容易,你可能会得到这样一个一定的警示作用...像选中投如果我没有记错 –
@Parker_Halo是的,当你施放对象也收到相同的警告狗 – wero
你确定吗?我只是在我的Eclipse中尝试过它,并没有给出任何警告...... –
迭代获得过List<Object>
和投每个项目明确地
List<Dog> dog = new ArrayList<Dog>;
for (Object o : obj)
dog.add((Dog) o);
会不会是有效的,如果将不得不遍历的超过一万项列表中? –
@SyedHassan我刚刚尝试了20000个被转换成String的对象,并花了4毫秒。所以我认为它应该足够快;) –
如果列表包含非狗,这会失败,出现一个'ClassCastException',否则它也可以安全地简单地转换列表(请参阅我的答案),而不需要创建副本列表。 – wero
如果您正在使用Hibernate使用TypedQuery – proudandhonour
射击狗。成为对象。 – ErrorNotFoundException
[具体类型之间铸造(http://bayou.io/draft/Wildcard_Case_Studies.html#Casting_Between_Concrete_Types) – ZhongYu