[問題] Generic types casting

看板java作者 (CA)時間17年前 (2009/07/19 13:13), 編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/1
我在實作 Observer 時 void update( Observable o, Object arg ) { if( arg instanceof Vector<?> ) { Vector< File > paths = (Vector< File >) arg; } } 然後就出現 warning 問題是我找不到除了 annotation 以外比較好看的解法 因為 Generic 的資訊在 runtime 就不存在了 (它好像不是在 JVM 上實作的...如果我對它的理解沒錯的話) 想到的一個解法是"窮人的typedef" 就是 class VectorFile extends Vector<File> {} 然後用 VectorFile 去 cast, 不過....這有點囧 請問有其他的方法可以用嗎? 題外話: 我一直覺得 Java 的 generic 用起來有點....彆扭 no offence. -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.131.25

07/19 14:41, , 1F
@SuppressWarning是你的好朋友XD
07/19 14:41, 1F

07/19 14:43, , 2F
generic真的很爛... 將就用吧
07/19 14:43, 2F

07/20 05:39, , 3F
我覺得這裡出現 warning 還算合理 要怪就怪 Observer 吧
07/20 05:39, 3F

07/20 08:58, , 4F
個人不覺得合理...如果它有在JVM上實作就不會有這種事
07/20 08:58, 4F

07/20 09:02, , 5F
但是改 JVM 勢必會降低回溯相容, 目前的寫法是經過妥協的
07/20 09:02, 5F

07/20 09:03, , 6F
這是 Java 的承諾, 也是 Java 的包袱.
07/20 09:03, 6F

07/20 09:36, , 7F
(雖然說 JVM 第三版的規格草案好像也公布了....)
07/20 09:36, 7F

07/20 10:05, , 8F
現在介面也該清理一下了吧 ... orz
07/20 10:05, 8F

07/20 10:07, , 9F
我照著你語言的規格走,結果要用annotation關掉警告= =
07/20 10:07, 9F
文章代碼(AID): #1AOgk9jU (java)
文章代碼(AID): #1AOgk9jU (java)