尝试使用instanceof迭代Class []比较

时间:2017-09-12 21:00:21

标签: java instanceof

我试图遍历一个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();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您只能使用instanceof和编译时已知的类型名称。

您可以使用Class.isInstance方法修复第一部分:

if (c.isInstance(cand))

...但是这对methodInInterestingClasses()没有帮助,听起来你不得不用反射打电话。