【问题标题】:Checking if class is of certain type检查类是否属于某种类型
【发布时间】:2016-10-30 19:33:48
【问题描述】:

我正在尝试在一个将Class 作为参数的类中创建一个方法,并检查当前对象是否属于该类型。我的代码:

public class MyEvent extends MyBPMNNode {

public boolean isKindOf(Class<?> node) {
    boolean b = MyEvent.this instanceof node;
    return b;
}

但我编译它给了我:

Error:(9, 45) java: cannot find symbol
symbol:   class node

我在这里做错了什么?可能我对'Class'类的理解不对。

【问题讨论】:

  • node.isAssignableFrom(this)instanceof 需要一个编译时常量第二个操作数。
  • 更正:instanceof 需要一个引用类型作为第二个操作数。
  • @AndyTurner: .isAssignableFrom() 接受Classthis 不是 Class

标签: java class generics


【解决方案1】:

你想要:

public boolean isKindOf(Class<?> clazz) {
    return clazz.isInstance(this);
}

【讨论】:

    【解决方案2】:

    你可能在关注node.isAssignableFrom(MyEvent.this)

    【讨论】:

      【解决方案3】:

      您没有特殊原因引入泛型。试试这个:

          public boolean isKindOf(Object node) {
              // weak
              return node.getClass().isAssignableFrom(getClass());
              // stronger, but not appropriate in your case
              //return this.getClass().equals(node.getClass());
          }
      

      安迪·特纳的回答要简洁得多。原谅我。

      【讨论】:

        猜你喜欢
        • 2012-10-02
        • 1970-01-01
        • 2011-09-10
        • 1970-01-01
        • 2010-10-31
        • 2021-07-04
        • 2011-03-25
        • 2016-08-07
        • 1970-01-01
        相关资源
        最近更新 更多