【问题标题】:Trying to iterate through Class[ ] comparing using instanceof尝试通过使用 instanceof 比较的 Class[ ] 进行迭代
【发布时间】:2017-09-12 21:00:20
【问题描述】:

我正在尝试遍历 Class 的数组以确定候选对象是否“有趣”。 ABCD 没有合适的父类(它们是兄弟姐妹,但并非所有兄弟姐妹都很有趣)。我无法添加父类,也无法修改 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();
        }
    }
}

【问题讨论】:

  • Nit:不要使用原始类型。使用List<Class<?>> 而不是Class[]
  • 同意。以最快的速度输入演示。

标签: java instanceof


【解决方案1】:

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

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

if (c.isInstance(cand))

...但是methodInInterestingClasses() 对您没有帮助,听起来您必须通过反射来调用它。

【讨论】:

  • 谢谢,最终使用反射。
猜你喜欢
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
相关资源
最近更新 更多