java - 这是好的代码和 Java 选项的使用吗

标签 java javaoptions

这样的代码风格和Option的使用是否良好? 这似乎不对,因为该方法返回泛型,但主体不使用泛型返回。另外,由于 IF 语句的原因,“味道”有点不好。

public Optional<MyObjectType> readData() {
    MyObjectType[] myArray = // Will not be null, but maybe Size 0.
    if(myArray.length > 0)
        return Optional.of(myArray[0]);

    return Optional.of(null);
}

在客户端我有:

public void clientCode() {
    Optional<CurrencyPointData> oData = readCurrency(Currency.ADA);
    if(oData.isPresent()) {
        CurrencyPointData data = oData.get();
        // Use data object
    }
}

这似乎也没有比正常的 if(oData == null) 好多少检查。

因此,这段代码看起来很垃圾,所以我不应该使用Optional吗?

最佳答案

您的客户端代码展示了可选的用途。

它鼓励代码在调用 get() 之前检查 isPresent(),突出显示可能没有值的问题,这与简单地使用 CurrencyPointData 不同。 code> 没有 Optional,则返回值是否可以为 null 是未定义的。当然,您可以记录方法是否可以返回null,但这在代码中并不明显,而且我们都知道人们很少详细阅读文档。

使用Optional,您明确表示该值可能会丢失。

就是为什么Optional比简单的null检查更好。

关于java - 这是好的代码和 Java 选项的使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935192/

相关文章:

java - ActionBarSherlock、ViewPager、TabsAdapter嵌套Tab Fragments

java - SingleFrameApplication 不需要 ALT 来激活菜单项助记符?

java - 如何将 map 内容添加到Multimap?

java hashmap键迭代

java - 如何使用 SWING/AWT 在 Java 中绘制 Mandelbrot 集?

java - "Picked up _JAVA_OPTIONS"当不存在这样的环境变量时

java - JVM 选项 -Xss - 它究竟做了什么?