检查 String 是否为 null 或为空,有时为 null,有时不为空
Check if a String is null or empty when it's null sometimes and sometimes not
嗯,我一般不写这种题,不过看了之后:
Java, check whether a string is not null and not empty? and Checking if a string is empty or null in Java.
我的程序创建了一个 PDF,其中包含原始合同和修改后合同中已更改的信息,但只有这些信息。如果两个合同中的信息相同,则不会绘制。但如果不是,那么它会绘制它。
当两份合同中都有内容时,我没有问题,例如票据。
如果在原始合同上他们没有写任何东西,但他们在修改(背书)上写了任何东西,那么系统不应该在注释字段上绘制任何东西。如果他们写了一些东西并在修改时将其删除,也是一样的。这就是问题所在。
当我尝试比较时:
if ((sSPA.getNotes() == null ||
sSPA.getNotes().length() == 0) &&
(sSPE.getNotes() != null ||
sSPE.getNotes().length() != 0)) {
//Some stuff here
}
我也试过了
if ((sSPA.getNotes() == null ||
sSPA.getNotes().equals("")) &&
(sSPE.getNotes() != null ||
!sSPE.getNotes().equals(""))) {
//Some stuff here
}
和
if ((sSPA.getNotes() == null ||
sSPA.getNotes().isEmpty()) &&
(sSPE.getNotes() != null ||
!sSPE.getNotes().isEmpty())) {
//Some stuff here
}
我在登录执行时收到以下错误:
java.lang.NullPointerException
at com.dnhr.rwa.server.document.PdfEndorsement.renderSubscriptionSubmissionProp(PdfEndorsement.java:1545)
我知道这是因为该字段是 null
,我正在尝试获取它的长度,或者将它与空字符串进行比较,它正在尝试这样做:
if (null.equals("")) {
并抛出与 length()
方法相同的异常。
如果我尝试这样做:
if ((sSPA.getNotes() == null ||
getStringValue(sSPA.getNotes().equals(""))) &&
(sSPE.getNotes() != null ||
!getStringValue(sSPE.getNotes().equals("")))) {
//Some stuff here
}
编译时returns出现如下错误:
[javac] /home/efrain/proyectos/rwa-test/trunk/src/com/dnhr/rwa/server/document/PdfEndorsement.java:1541: error: bad operand types for binary operator '||'
[javac] if ((sSPA.getNotes() == null ||
[javac] ^
[javac] first type: boolean
[javac] second type: String
是否有任何其他方法来比较字段是否为 null 或空
这是我如何比较 3 种可能性的示例:
if((sSPA.getNotes() == null || sSPA.getNotes().trim().equals("")) &&
(sSPE.getNotes() != null || !sSPE.getNotes().equals(""))) {
//some stuff
} else if(!getStringValue(sSPA.getNotes()).
equals(getStringValue(sSPE.getNotes())) &&
(sSPE.getNotes() == null ||
sSPE.getNotes().trim().equals(""))) {
//some stuff
} else if(!getStringValue(sSPA.getNotes()).
equals(getStringValue(sSPE.getNotes()))) {
//some stuff
}
我认为检查空指针的最佳选择是
if(sSPA.getNotes()!=null && sSPA.getNotes().trim().length()>0){
}else{
//null
}
随便写
if( sSPA.getNotes() == null ||
(sSPA.getNotes() != null && sSPA.getNotes().isEmpty()) ...
情况 1:sSPA.getNotes() 为空
第一个表达式的计算结果为真。因此如果案件正在执行
情况 2:sSPA.getNotes() 不是 null 而是空的
第一个表达式为 false,因此计算第二个表达式。因为 sSPA 不为空,所以第一个子表达式通过并且 sSPA.getNotes.isEmpty() returns 为真。整个表达式为真 -> if 案例被执行。
情况 2:sSPA.getNotes() 不为 null 且不为空
除 != null 情况外,每个表达式的计算结果均为 false。总体而言,完整条件为假 -> if 情况未执行。
Is there any other way to compare if the field is null or empty
您可以简单地使用这样的辅助方法:
static boolean nullOrEmpty(Stirng s) {
return s == null || s.isEmpty();
}
这将使您的代码更具可读性。
嗯,我一般不写这种题,不过看了之后:
Java, check whether a string is not null and not empty? and Checking if a string is empty or null in Java.
我的程序创建了一个 PDF,其中包含原始合同和修改后合同中已更改的信息,但只有这些信息。如果两个合同中的信息相同,则不会绘制。但如果不是,那么它会绘制它。
当两份合同中都有内容时,我没有问题,例如票据。
如果在原始合同上他们没有写任何东西,但他们在修改(背书)上写了任何东西,那么系统不应该在注释字段上绘制任何东西。如果他们写了一些东西并在修改时将其删除,也是一样的。这就是问题所在。
当我尝试比较时:
if ((sSPA.getNotes() == null ||
sSPA.getNotes().length() == 0) &&
(sSPE.getNotes() != null ||
sSPE.getNotes().length() != 0)) {
//Some stuff here
}
我也试过了
if ((sSPA.getNotes() == null ||
sSPA.getNotes().equals("")) &&
(sSPE.getNotes() != null ||
!sSPE.getNotes().equals(""))) {
//Some stuff here
}
和
if ((sSPA.getNotes() == null ||
sSPA.getNotes().isEmpty()) &&
(sSPE.getNotes() != null ||
!sSPE.getNotes().isEmpty())) {
//Some stuff here
}
我在登录执行时收到以下错误:
java.lang.NullPointerException
at com.dnhr.rwa.server.document.PdfEndorsement.renderSubscriptionSubmissionProp(PdfEndorsement.java:1545)
我知道这是因为该字段是 null
,我正在尝试获取它的长度,或者将它与空字符串进行比较,它正在尝试这样做:
if (null.equals("")) {
并抛出与 length()
方法相同的异常。
如果我尝试这样做:
if ((sSPA.getNotes() == null ||
getStringValue(sSPA.getNotes().equals(""))) &&
(sSPE.getNotes() != null ||
!getStringValue(sSPE.getNotes().equals("")))) {
//Some stuff here
}
编译时returns出现如下错误:
[javac] /home/efrain/proyectos/rwa-test/trunk/src/com/dnhr/rwa/server/document/PdfEndorsement.java:1541: error: bad operand types for binary operator '||'
[javac] if ((sSPA.getNotes() == null ||
[javac] ^
[javac] first type: boolean
[javac] second type: String
是否有任何其他方法来比较字段是否为 null 或空
这是我如何比较 3 种可能性的示例:
if((sSPA.getNotes() == null || sSPA.getNotes().trim().equals("")) &&
(sSPE.getNotes() != null || !sSPE.getNotes().equals(""))) {
//some stuff
} else if(!getStringValue(sSPA.getNotes()).
equals(getStringValue(sSPE.getNotes())) &&
(sSPE.getNotes() == null ||
sSPE.getNotes().trim().equals(""))) {
//some stuff
} else if(!getStringValue(sSPA.getNotes()).
equals(getStringValue(sSPE.getNotes()))) {
//some stuff
}
我认为检查空指针的最佳选择是
if(sSPA.getNotes()!=null && sSPA.getNotes().trim().length()>0){
}else{
//null
}
随便写
if( sSPA.getNotes() == null ||
(sSPA.getNotes() != null && sSPA.getNotes().isEmpty()) ...
情况 1:sSPA.getNotes() 为空 第一个表达式的计算结果为真。因此如果案件正在执行
情况 2:sSPA.getNotes() 不是 null 而是空的 第一个表达式为 false,因此计算第二个表达式。因为 sSPA 不为空,所以第一个子表达式通过并且 sSPA.getNotes.isEmpty() returns 为真。整个表达式为真 -> if 案例被执行。
情况 2:sSPA.getNotes() 不为 null 且不为空 除 != null 情况外,每个表达式的计算结果均为 false。总体而言,完整条件为假 -> if 情况未执行。
Is there any other way to compare if the field is null or empty
您可以简单地使用这样的辅助方法:
static boolean nullOrEmpty(Stirng s) {
return s == null || s.isEmpty();
}
这将使您的代码更具可读性。