[問題] cast Vector<T>

看板java作者 (e :) y)時間18年前 (2007/09/21 07:15), 編輯推噓6(602)
留言8則, 6人參與, 最新討論串1/2 (看更多)
class A; class B extends A; 或是 Interface A; class B implements A; Vector<A> vec = new Vector<A>; for (...) { B b = new B(); vec.add(b); } ~ 請問 我如何 將 vec 轉成 Vector<B> 型態? -- PLUR -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 79.210.65.181

09/21 10:09, , 1F
囧? 好奇怪的需求阿... Orz
09/21 10:09, 1F

09/21 10:13, , 2F
沒有辦法直接做,只能重新宣告一個 Vector<B>,然後將
09/21 10:13, 2F

09/21 10:14, , 3F
Vector<A>內的element一個一個的 cast 到 B 再 add
09/21 10:14, 3F

09/21 10:43, , 4F
想轉成 Vector<B> 即是你 vec 都是只放 B, 那麼當初為
09/21 10:43, 4F

09/21 10:44, , 5F
什麼不直接用 Vector<B> ?
09/21 10:44, 5F

09/21 15:42, , 6F
Vector<B> vb = new Vector<B>((Collection)vec);
09/21 15:42, 6F

09/21 22:19, , 7F
善用Polymorphism(多型)的機制,盡量避免向上轉型
09/21 22:19, 7F

09/24 18:36, , 8F
後來我想到的方法是用java generics解決
09/24 18:36, 8F
文章代碼(AID): #16ylxvCA (java)
文章代碼(AID): #16ylxvCA (java)