尝试遍历 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()
没有帮助,听起来您必须反思一下。
我正在尝试遍历 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()
没有帮助,听起来您必须反思一下。