在调用instanceof之前是否需要进行null检查?

null instanceof SomeClass返回false还是抛出NullPointerException



慕姐8265434
浏览 655回答 3
3回答

哈士奇WWW

不,在使用instanceof之前不需要进行空检查。表达式x instanceof SomeClass为falseif xis null。根据Java语言规范的第15.20.2节“类型比较运算符instanceof”:“在运行时,instanceof运算符的结果 是,true如果RelationalExpression 的值不是null,并且引用可以强制转换为ReferenceType 而不会引发ClassCastException。否则,结果为false。”因此,如果操作数为null,则结果为false。

红颜莎娜

使用null引用作为instanceof返回的第一个操作数false。

互换的青春

确实是一个很好的问题。我只是为自己而努力。public class IsInstanceOfTest {    public static void main(final String[] args) {        String s;        s = "";        System.out.println((s instanceof String));        System.out.println(String.class.isInstance(s));        s = null;        System.out.println((s instanceof String));        System.out.println(String.class.isInstance(s));    }}版画truetruefalsefalseJLS / 15.2.2。类型比较运算符instanceof在运行时,instanceof运算符的结果是,true如果RelationalExpression的值不是null,并且引用可以强制转换为ReferenceType而不引发ClassCastException。否则结果为false。API / Class#isInstance(Object)如果此Class对象表示一个接口,true则如果指定Object参数的类或任何超类实现此接口,则此方法返回;否则,该方法返回。否则返回false。如果此Class对象表示原始类型,则此方法返回false。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java