我想获取字段的字符串值(它们可以是长字符串或任何对象的类型),
如果一个字段为null,那么它应该返回空字符串,我用guava做了这个;
nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...
但是如果变速箱为空,则返回null!不是空字符串,因为valueOf methdod返回字符串“null”,这会导致错误。
任何想法?
EDIt:有100个字段,我寻找易于实现的东西
答案 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, "")