当前位置: 首页 > 知识库问答 >
问题:

Java-超类的instanceof[重复]

郭建华
2023-03-14

假设我有两门课:

public Class1 {
/* class body*/
}

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

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

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

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

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

共有2个答案

艾凌龙
2023-03-14

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

   object instanceof Superclass
&& !(object instanceof Subclass)

或者,使用if/ett链:

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

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

邵展
2023-03-14

您可以使用等于:

if (this.getClass().equals(Class1.class) {
    // Do something...
}
 类似资料:
  • 在java中,我们可以缩小返回类型和throws异常类型(甚至删除throws子句): 但是,参数类型呢(如果A采用< code>T,那么为什么B不采用< code >?超级T)如: 让我们考虑一下我认为完全符合逻辑的这段代码: 所以我要说的是,在使用的代码上下文中仍然有效。

  • 如果我有以下代码 首先,这甚至是可能的,因为它编译得很好。但是我不能使用中的方法执行操作: makeCan是否不同时返回Can和PromotionalCan?如果是这样,当返回PromotionalCan时,如何对变量进行操作?谢谢 编辑:PromotionalCan继承自Can,第二种方法是在PromotionalCan中

  • 问题内容: 有没有办法找到泛型的类类型? 以上内容绝对无法编译。 问题答案: 泛型是编译时功能。泛型在编译时添加检查,这在运行时可能没有任何意义。这是一个例子。您只能检查所引用对象的类型,它可能是代码中的超级类型。如果要传递类型T,则必须明确地执行此操作。 要么 注意:类型可能不相同,

  • instanceof 操作符用于检查一个对象是否属于某个特定的 class。同时,它还考虑了继承。 在许多情况下,可能都需要进行此类检查。例如,它可以被用来构建一个 多态性(polymorphic) 的函数,该函数根据参数的类型对参数进行不同的处理。 instanceof 操作符 语法: obj instanceof Class 如果 obj 隶属于 Class 类(或 Class 类的衍生类),

  • 问题内容: 我了解到Java具有运算符。你能详细说明它的使用位置及其优点吗? 问题答案: 基本上,你检查对象是否是特定类的实例。当你拥有超类或接口类型的对象的引用或参数,并且需要知道实际对象是否具有其他类型(通常更具体)时,通常可以使用它。 例: 请注意,如果你必须经常使用该运算符,通常表明你的设计存在一些缺陷。因此,在设计良好的应用程序中,你应尽可能少使用该运算符(当然,该通用规则也有例外)。

  • 我有一个 但当我这么做的时候, 我该怎么解决这个问题?游戏是超级超级类...