看板 java 關於我們 聯絡資訊
我在實作 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
zerodevil:@SuppressWarning是你的好朋友XD 07/19 14:41
zerodevil:generic真的很爛... 將就用吧 07/19 14:43
cgkm:我覺得這裡出現 warning 還算合理 要怪就怪 Observer 吧 07/20 05:39
legnaleurc:個人不覺得合理...如果它有在JVM上實作就不會有這種事 07/20 08:58
kene:但是改 JVM 勢必會降低回溯相容, 目前的寫法是經過妥協的 07/20 09:02
kene:這是 Java 的承諾, 也是 Java 的包袱. 07/20 09:03
kene:(雖然說 JVM 第三版的規格草案好像也公布了....) 07/20 09:36
legnaleurc:現在介面也該清理一下了吧 ... orz 07/20 10:05
legnaleurc:我照著你語言的規格走,結果要用annotation關掉警告= = 07/20 10:07