这样的代码风格和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/