将Optional<T>
与可以为空的字段一起使用时,让setter采用
Optional<T>
T
,然后按如下方式进行操作?public class Bar {
private Optional<T> foo;
public void setFoo(T foo) {
this.foo = Optional.<T>fromNullable(foo);
}
public Optional<T> getFoo() {
return foo;
}
}
答案 0 :(得分:6)
我认为两者都没有,只在T内部存储值,并且在API级别只有Optional。
public class Bar {
private T foo;
public Optional<T> getFoo() {
return Optional.<T>fromNullable(foo);
}
public void setFoo(T foo) {
this.foo = foo;
}
}
答案 1 :(得分:3)
作为一般规则,我建议:
public void setFoo(T foo) {
this.foo = checkNotNull(foo); // don't allow null at all!
}
然后,如果用户拥有他们知道可能为null
的值,他们可以这样做:
if (foo != null) {
bar.setFoo(foo);
}
答案 2 :(得分:0)
后者将是我的建议。但客观上哪个更具惯用性。
public class Bar {
private T foo;
public void setFoo(T foo) {
this.foo = Optional.<T>fromNullable(foo);
}
}