我试图遍历一个Class数组,以确定候选对象是否有趣#39; A,B,C,D没有合适的父级(他们是兄弟姐妹,但不是所有的兄弟姐妹都很有趣)。我无法添加父类,也无法修改A,B,C,D。我想做类似下面的内容,但语法不合法。
private static final Class[] types = { A.class, B.class, C.class, D.class};
....
void method(Object cand) {
for (Class c : types) {
if (cand instanceof c) {//cand is interesting, but c isn't type
( (c) cand).methodInInterestingClasses();
}
}
}
答案 0 :(得分:2)
您只能使用instanceof
和编译时已知的类型名称。
您可以使用Class.isInstance
方法修复第一部分:
if (c.isInstance(cand))
...但是这对methodInInterestingClasses()
没有帮助,听起来你不得不用反射打电话。