java - 检查字符串是否为空或空时有时为空,有时不为空

标签 java string null compare

嗯,我通常不会写这类问题,但即使检查后:

Java, check whether a string is not null and not empty?Checking if a string is empty or null in Java .

我的程序创建了一个 PDF,其中包含原始契约(Contract)和修改后的契约(Contract)中已更改的信息,但仅限于这些信息。如果两份契约(Contract)中的信息相同,则不会绘制。但如果不是,那么它就会绘制它。

当两份契约(Contract)中都有某些内容(例如注释)时,我没有问题。

如果在原始契约(Contract)上他们没有写任何内容,但在修改(认可)上写了任何内容,那么系统不应在注释字段中绘制任何内容。如果他们写了一些东西并在修改时将其删除,也是如此。这就是问题所在。

当我尝试比较时:

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
}

它在编译时返回以下错误:

[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
}

最佳答案

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 - 检查字符串是否为空或空时有时为空,有时不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29309853/

相关文章:

python - 对字符串列表执行算术运算

python - 帮助处理 Python 字符串

ruby - 我可以快捷检查变量是否为 `nil` 并替换为默认值吗?

c# - 将 "Null"或 "None"成员添加到枚举中是一种好的做法吗?

c++ - 为什么即使我们将指针分配给 NULL,指针指向的对象的大小也不为零?

java - 每个 JSON 可序列化的 Java 对象都可以表示为 Map<String, Object> 吗?

java - 将 Extended TreeMap 与 Hazelcast TreeMap 结合使用,充当 Hazelcast 分布式 Map。

java - Selenium 化物-无效选择器 : Unable to locate an element with the xpath expression

java - 一般错误 :class is not applicable for the arguments

android - 字符串值看起来相同,但彼此不是 ".equals()"