在 Java 中使用“instanceof”

2022-08-31 05:07:06

“instanceof”运算符的用途是什么?

我了解到Java有运算符。您能详细说明一下它在哪里使用以及它的优势是什么吗?instanceof


答案 1

基本上,您检查对象是否是特定类的实例。当您对具有超类或接口类型的对象具有引用或参数并且需要知道实际对象是否具有其他类型(通常更具体)时,通常使用它。

例:

public void doSomething(Number param) {
  if( param instanceof Double) {
    System.out.println("param is a Double");
  }
  else if( param instanceof Integer) {
    System.out.println("param is an Integer");
  }

  if( param instanceof Comparable) {
    //subclasses of Number like Double etc. implement Comparable
    //other subclasses might not -> you could pass Number instances that don't implement that interface
    System.out.println("param is comparable"); 
  }
}

请注意,如果您必须经常使用该运算符,则通常暗示您的设计存在一些缺陷。因此,在设计良好的应用程序中,您应该尽可能少地使用该运算符(当然,该一般规则也有例外)。


答案 2

instanceof用于检查对象是类的实例、子类的实例还是实现特定接口的类的实例。

在此处阅读 Oracle 语言定义中的详细信息。