我想获取我的字段的字符串值(它们可以是长字符串或任何对象的类型),
如果field为null而不是返回空字符串,我用guava做了这个;
nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...
Run Code Online (Sandbox Code Playgroud)
但是如果变速箱为空,则返回null!不是空字符串,因为valueOf methdod返回字符串"null",这会导致错误.
有任何想法吗?
EDIt:有100个字段我寻找易于实现的东西
ars*_*jii 113
您可以使用Objects.toString()
(Java 7中的标准):
Objects.toString(gearBox, "")
Objects.toString(id, "")
Run Code Online (Sandbox Code Playgroud)
从链接的文档:
public static String toString(Object o, String nullDefault)
toString
如果第一个参数不为null,则返回调用第一个参数的结果,否则返回第二个参数.参数:
o
- 一个对象
nullDefault
- 如果第一个参数是,则返回null
返回:如果不是则
调用toString
第一个参数的结果,null
否则返回第二个参数.也可以看看:
toString(Object)
Fed*_*zza 33
对于java 8,您可以使用Optional方法:
Optional.ofNullable(gearBox).orElse("");
Optional.ofNullable(id).orElse("");
Run Code Online (Sandbox Code Playgroud)
Kep*_*pil 20
如果你不介意使用Apache公共,他们有一个StringUtils.defaultString(String str)
这样做.
返回传入的String,如果String为null,则返回空String("").
如果你也想摆脱"null"
,你可以这样做:
StringUtils.defaultString(str).replaceAll("^null$", "")
Run Code Online (Sandbox Code Playgroud)
或忽略大小写:
StringUtils.defaultString(str).replaceAll("^(?i)null$", "")
Run Code Online (Sandbox Code Playgroud)
Won*_*Kim 14
如果替代方式,Guava提供Strings.nullToEmpty(String)
.
源代码
String str = null;
str = Strings.nullToEmpty(str);
System.out.println("String length : " + str.length());
Run Code Online (Sandbox Code Playgroud)
结果
0
Run Code Online (Sandbox Code Playgroud)
小智 12
StringUtils.defaultString(String str)
返回传入的字符串,或者如果字符串为 null,则返回空字符串 ("")。
java 文档中的示例
StringUtils.defaultString(null)
会回来""
StringUtils.defaultString("")
会回来""
StringUtils.defaultString("bat")
会回来"bat"
在 Java 9+ 中使用:Objects.requireNonNullElse (obj, defaultObj) https://docs.oracle.com/javase/9/docs/api/java/util/Objects.html#requireNonNullElse-TT-
//-- returns empty string if obj is null
Objects.requireNonNullElse (obj, "")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
54897 次 |
最近记录: |