作者legnaleurc (CA)
看板java
标题[问题] Generic types casting
时间Sun Jul 19 13:13:42 2009
我在实作 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
1F:推 zerodevil:@SuppressWarning是你的好朋友XD 07/19 14:41
2F:→ zerodevil:generic真的很烂... 将就用吧 07/19 14:43
3F:推 cgkm:我觉得这里出现 warning 还算合理 要怪就怪 Observer 吧 07/20 05:39
4F:→ legnaleurc:个人不觉得合理...如果它有在JVM上实作就不会有这种事 07/20 08:58
5F:推 kene:但是改 JVM 势必会降低回溯相容, 目前的写法是经过妥协的 07/20 09:02
6F:→ kene:这是 Java 的承诺, 也是 Java 的包袱. 07/20 09:03
7F:→ kene:(虽然说 JVM 第三版的规格草案好像也公布了....) 07/20 09:36
8F:→ legnaleurc:现在介面也该清理一下了吧 ... orz 07/20 10:05
9F:→ legnaleurc:我照着你语言的规格走,结果要用annotation关掉警告= = 07/20 10:07