尝试遍历 Class[ ] 使用 instanceof 进行比较

Trying to iterate through Class[ ] comparing using instanceof

我正在尝试遍历 Class 数组以确定候选 object 是否为 'interesting'。 A, B, C, D 没有合适的 parent class (他们是兄弟姐妹,但并非所有兄弟姐妹都是有趣的)。我不能添加 parent class 也不能修改 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();
        }
    }
}

您只能将 instanceof 与编译时已知的类型名称一起使用。

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

if (c.isInstance(cand))

...但这对您 methodInInterestingClasses() 没有帮助,听起来您必须反思一下。