null时获取空字符串

时间:2014-02-21 13:59:18

标签: java guava

我想获取字段的字符串值(它们可以是长字符串或任何对象的类型),

如果一个字段为null,那么它应该返回空字符串,我用guava做了这个;

nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...

但是如果变速箱为空,则返回null!不是空字符串,因为valueOf methdod返回字符串“null”,这会导致错误。

任何想法?

EDIt:有100个字段,我寻找易于实现的东西

9 个答案:

答案 0 :(得分:97)

您可以使用Objects.toString()(Java 7中的标准):

Objects.toString(gearBox, "")

Objects.toString(id, "")

来自链接文档:

  

public static String toString(Object o, String nullDefault)

     
    

如果第一个参数不为null,则返回在第一个参数上调用toString的结果,否则返回第二个参数。

         

<强>参数:
     o - 一个对象
     nullDefault - 如果第一个参数为null

,则返回字符串          

<强>返回:
      如果第一个参数不是toString则调用null的结果,否则调用第二个参数。

         

另见:
      toString(Object)

  

答案 1 :(得分:23)

对于java 8,您可以使用可选方法:

Optional.ofNullable(gearBox).orElse("");
Optional.ofNullable(id).orElse("");

答案 2 :(得分:18)

如果你不介意使用Apache commons,他们有StringUtils.defaultString(String str)这样做。

  

返回传入的String,或者如果String为null,则返回一个空字符串(“”)。

如果你还想摆脱"null",你可以这样做:

StringUtils.defaultString(str).replaceAll("^null$", "")

或忽略大小写:

StringUtils.defaultString(str).replaceAll("^(?i)null$", "")

答案 3 :(得分:7)

使用内联空检查

gearBox == null ? "" : String.valueOf(gearBox);

答案 4 :(得分:5)

因为你正在使用番石榴:

Objects.firstNonNull(gearBox, "").toString();

答案 5 :(得分:1)

如果替代方式,番石榴提供Strings.nullToEmpty(String)

源代码

String str = null;
str = Strings.nullToEmpty(str);
System.out.println("String length : " + str.length());

<强>结果

0

答案 6 :(得分:1)

StringUtils.defaultString(String str) 返回传入的 String,或者如果 String 为 null,则返回一个空字符串 ("")。

Java 文档中的示例

<块引用>

StringUtils.defaultString(null) 将返回 "" StringUtils.defaultString("") 将返回 "" StringUtils.defaultString("bat") 将返回 "bat"

答案 7 :(得分:0)

所有版本的最佳解决方案就是这个明显的例子:

实施方法

// object to Object string

public static Object str(Object value) {
    if (value == null) {
        value = new String();
    }
    return value;
}

// Object to String 

public static String str(Object value) {
    if (value == null) {
        value = new String();
    }
    return value.toString();
}

// String to String (without nulls)

public String str(String value) {
    if (value == null) {
        value = new String();
    }
    return value;
}

使用:

str(yourString);

答案 8 :(得分:0)

在Java 9+中,使用:Objects.requireNonNullElse(obj,defaultObj)https://docs.oracle.com/javase/9/docs/api/java/util/Objects.html#requireNonNullElse-T-T-

//-- returns empty string if obj is null
Objects.requireNonNullElse (obj, "")