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

null instanceof SomeClass返回false还是抛出NullPointerException ?

#1楼

确实,这是一个很好的问题。 我只是为自己而努力。 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));

}

}

版画 true

true

false

false

#2楼

instanceof运算符不需要显式的null检查,因为如果操作数为null ,则它不会引发NullPointerException 。

在运行时,如果关系表达式的值不为null ,并且引用可以强制转换为引用类型而不会引发类强制转换异常,则instanceof运算符的结果为true。

如果操作数为null ,则instanceof运算符将返回false ,因此不需要显式的null检查。

考虑下面的示例, public static void main(String[] args) {

if(lista != null && lista instanceof ArrayList) {                     //Violation

System.out.println("In if block");

}

else {

System.out.println("In else block");

}

}

正确使用instanceof如下所示, public static void main(String[] args) {

if(lista instanceof ArrayList){                     //Correct way

System.out.println("In if block");

}

else {

System.out.println("In else block");

}

}

#3楼

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

#4楼

不,这不对。 如果instanceof的第一个操作数为null则将返回false 。

#5楼

不,使用instanceof之前不需要进行空检查。

如果x为null则表达式x instanceof SomeClass为false 。

因此,如果操作数为null,则结果为false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值