Java-超类的instanceof

时间:2019-04-08 06:35:00

标签: java inheritance instanceof

假设我有两个班级:

public Class1 {
/* class body*/
}

public Class2 extends Class1 {
 public Class2 (int var1, int var2) {
 super(var11, var2); 
 }
}

现在我需要确定我拥有哪个类对象。在这种情况下,如何确定我有Class1Class2对象?

Object var1 = new Class1(1,2);
Object var2 = new Class2(1,2);

var2 instanceof Class2; /*true*/
var2 instanceof Class1 /*true*/

在两种情况下,instanceof将返回true。

2 个答案:

答案 0 :(得分:4)

您可以使用equals

if (this.getClass().equals(Class1.class) {
    // Do something...
}

答案 1 :(得分:0)

测试它是否不是子类的实例:

   object instanceof Superclass
&& !(object instanceof Subclass)

或者,使用if / else链:

if (object instanceof Subclass) {
  // Do something.
} else if (object instanceof Superclass) {
  // Do something else.
}

选择取决于您实际使用的目的。