是一件坏事 - Java Generics

时间:2013-06-26 22:31:44

标签: java generics casting

我有这个代码,我想知道这是否被认为是不好的做法:

Class<T> type = null;
if (type.isInstance(TypeA.class)) {
    for (Object obj : typeAList) {
        TypeA mytype = (TypeA) obj;
        System.out.println(mytype.getMyId());
    }
}    

typeAList实际上是参数List<T> typeAList

这里有什么不好的标记吗?这可以做得更好吗?

1 个答案:

答案 0 :(得分:4)

如果typeAListList<T>,那你为什么不这样迭代:

for(T obj : typeAList) {
    System.out.println(obj.getMyId());
}

如果T被定义为扩展某些已定义getMyId()方法的已知类/接口。否则:

for(T obj : typeAList) {
    if (obj instanceof TypeA) {
        System.out.println(((TypeA)obj).getMyId());
    }
}