如何清單列表轉換。我試圖通過如何轉換列表<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