Avatar ·

在Java中,instanceof之前是否需要检查null?

大家好,同事们!我是一名初级Java开发者,遇到了一个困扰我的问题。假设我有一个可能为null的变量,我想用instanceof检查它的类型。在此之前是否需要显式检查变量不为null? 以下是我经常写的示例代码: ```java Object obj = getSomeObject(); // 可能返回null if (obj != null) { if (obj instanceof String) { String str = (String) obj; System.out.println(str.length()); } } ``` 但最近有人告诉我,instanceof本身是安全的,对于null会返回false。也就是说可以这样写: ```java if (obj instanceof String) { String str = (String) obj; System.out.println(str.length()); } ``` 我试了一下——确实不会抛出NullPointerException。但我仍有疑虑:万一这只在特定情况下有效呢?也许有陷阱?例如,如果obj是null,那么instanceof返回false,但之后...