XDR*_*XDR 2 java lambda java-8 method-reference
是否有任何Java 8 API静态方法Function在非null输入上运行,但nullValue在null输入上返回?
我自己可以很容易地编写这个方法,但如果它存在,我宁愿使用标准方法.
public static <T, R> R transform(final T t, final Function<T, R> rFromT, final R nullValue) {
return
t == null
? nullValue
: rFromT.apply(t)
;
}
// which can be called like:
final Number x = getNumberThatCouldBeNull();
final long y = transform(x, Number::longValue, 0L);
Run Code Online (Sandbox Code Playgroud)
您可以在Java 8中使用新的Optional API:
final Number x = getNumberThatCouldBeNull();
final long y = Optional.ofNullable(x).map(Number::longValue).orElse(0L);
Run Code Online (Sandbox Code Playgroud)
如果x不为null,则将其映射到其long值,并将返回; 否则0将被退回.
当然,如果你想在方法中隐藏它,你可以拥有以下内容:
public static <T, R> R transform(final T t, final Function<T, R> mapper, final R nullValue) {
return Optional.ofNullable(t).map(mapper).orElse(nullValue);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
170 次 |
| 最近记录: |