我正在使用servlet来做各种各样的事情。

如果不存在特定的参数“ t”,那么我想执行某些类型的处理,如果确实要执行其他操作。

我正在尝试使用以下条件测试参数t(将其保存为名为editType的字符串):

String editType = request.getParameter("t");
if(!editType.isEmpty()||!(editType==null)){
    //processing here
}


我如何正确地执行此测试,因为我遇到了nullpointerexception问题,因为我的代码似乎总是期望“ t”的值,所以我需要能够创建一个不期望t的条件(允许它为null),并在其中进行处理。

最佳答案

您需要重新排序比较,特别是首先要检查null

String editType = request.getParameter("t");
if(editType!=null && !editType.isEmpty()){
    //processing here
}


您遇到的问题是Java试图在isEmpty()对象上调用null方法,这就是为什么您需要首先检查null的原因。

Java使用Short-circuit evaluation,这意味着它将从左到右检查您的条件,并且一旦找到可以确定整个条件结果的条件,它将停止评估。因此,如果editType最终为空,则Java将停止评估整个if语句,并且不会尝试调用isEmpty()(这将导致NullPointerException)。

10-05 22:17