什么是更惯用:setter采用Optional <T>或只是T?

Sau*_*lva 6 java guava

当使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*ing 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @SauloSilva在[本回答](http://stackoverflow.com/a/24564612/502399)中讨论了一些好处(在Java 8的"Optional <T>`类似的上下文中"). (2认同)