什么时候Java中的"obj instanceof Object"为false?

Aja*_*jay 4 java

考虑

 Object obj = ....;
 System.out.println(obj instanceof Object);
Run Code Online (Sandbox Code Playgroud)

该怎么回事是false(除了以外的任何其他选择null)

Tom*_*ine 39

这是一个棘手的问题吗?

Object obj = new Object() {{ System.out.println(false); System.exit(0); }};
System.out.println(obj instanceof Object);
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这会在创建时打印'false',而不是在执行instanceof检查时;) (3认同)
  • 双支撑成语.外括号是匿名内部类的语法(在这种情况下不定义任何方法).内部大括号是一个实例初始化器(成为构造函数的一部分). (2认同)

Jon*_*ght 11

这将打印错误:

public final class Foo {
    static private final class Object {
    }

    static public void main(String[] args)
    {
        java.lang.Object o = new java.lang.Object();
        System.out.println(o instanceof Object);
    }
}
Run Code Online (Sandbox Code Playgroud)

这不是你要的是什么,但我能想到的最好的...


oxb*_*kes 9

如果为非null,则永远不会返回falseobj


Dav*_*ton 6

一切都扩展了Object,所以你总会在这里得到真实(除非obj为null).