我只是想知道何时使用!= null
代替instanceof
检查某些内容是否为空是否有充分的理由或做法。
使用instanceof
测试某些内容是否为空是不好的做法?
例如:
View view = ((Activity) context).findViewById(viewID);
if (view instanceof View) {
listener.onView(view, viewID);
}
或
View view = ((Activity) context).findViewById(viewID);
if (view != null) {
listener.onView(view, viewID);
}
它的运作方式是否同样如此?
答案 0 :(得分:3)
这取决于你实际检查的内容
null
,请使用x == null
而不是其他如果您想知道特定引用是否不是null
并指向Foo
类型的实例,您可以使用x instanceof Foo
,因为它意味着不是{{1} }}
但是如果引用的编译时类型已经是null
,那么当知道实例为非Foo
时,您知道该实例的类型为Foo
,因此第一个项目符号适用在这种情况下;你只想测试null
。在更新的问题示例中就是这种情况,引用已经具有编译时类型null
。
如果您想知道类型广告View
是否会成功,您可以使用(Foo)x
,因为当x == null || x instanceof Foo
为x
时类型广播也会成功(但是,你应该三思而后行,是否真的想接受null
s,即使类型转换成功也是如此)
答案 1 :(得分:0)
在instanceof
之前根本不需要空检查。
如果它为null,那么在检查instanceof期间它将返回false。
使用instanceof
测试某些内容是否为空是不好的做法?
在运行时,当你不确定它是否为null时。只需使用instanceof
它就会在null对象的情况下返回false。
答案 2 :(得分:0)
我只是想知道是否有充分的理由或做法何时使用!= null而不是instanceof来检查某些东西是否为空。
当然有一个原因,!=null
可以应用于Java中的所有对象,但instanceof
不能应用于原始类型,它只检查给定对象是否是类的实例这就是我们使用!=null
来检查无效的原因。
用instanceof测试某些东西是否为空是不好的做法?
您可以使用它,但是如果它可能会导致原始类型出现问题并且instanceof
可以应用于所有对象,那么为什么要使用!=null
。
修改强>
在您使用if (view instanceof View)
的情况下更安全,因为您使用它来测试它是否是View
的实例,并且如果它不是null
则同时进行测试。
正如您在“Here”中看到的那样,您可以看到您可以使用instanceof
来检查无效。
答案 3 :(得分:0)
$idUser = (int)$this->getRequest()->getParam( 'idUser' );
$user = new Admin_Model_DbTable_User();
$rankuser=Admin_Models_UserTools::getRankByIdUser($idUser);
//var_dump($rankuser);
//die();
if(($rankuser!== 0)||($rankuser!==3)){
$nbDeleteRows = $user->delete( array ("idUser = ?" => $idUser) );
if( $nbDeleteRows === 0)
{
echo json_encode(array(
"response" => "false",
"errorMessage" => "Il y a eu une erreur lors la suppression de l'utilisateur."
));
exit();
}else{
echo json_encode(array(
"response" => "true",
"message" => "Il y a eu ". $nbDeleteRows ." utilisateur(s) supprimé(s)."
));
exit();
}
}
指令用于检查对象是否是某个类的实例。
因此,使用它来检查空值根本就没有意义......
在您的代码段中,您正在检查两个不同的内容:
instanceof
class 所以他们不是两种做同样事情的方法......