Java编程中可选.of(“xxxx”的值 请考虑以下java代码: Optional.of("some.constant.value")
当参数为常量时,如何使用任何值的Java编程中可选.of(“xxxx”的值 请考虑以下java代码: Optional.of("some.constant.value"),java,java-8,optional,Java,Java 8,Optional,当参数为常量时,如何使用任何值的Optional.of()?Optional通常用作可能返回值或可能不返回值的函数的返回值。这是一种避免处理空值的技术 例如,假设您有一个返回可选值的函数,您可以使用它来提供默认值: int x = person.getAge().orElse(42); 您所指的工厂函数是如何在被调用函数中构造可选函数: public Optional<Integer> getAge(){ if(this.age == null) retu
Optional.of()
?Optional通常用作可能返回值或可能不返回值的函数的返回值。这是一种避免处理空值的技术
例如,假设您有一个返回可选值的函数,您可以使用它来提供默认值:
int x = person.getAge().orElse(42);
您所指的工厂函数是如何在被调用函数中构造可选函数:
public Optional<Integer> getAge(){
if(this.age == null)
return Optional.empty();
return Optional.of(this.age);
}
public可选getAge(){
if(this.age==null)
返回可选的.empty();
返回可选的.of(此年龄);
}
这完全是上下文,没有上下文,任何人都不可能真正说出
但是。。。作为一对夫妇,我已经看到类似的事情是有用的(也许你可以确定哪一个是与你的给定环境相关的:
一种接口,其中某些方法是可选的
interface PotentiallyLimited {
OptionalInt getLimit();
}
class LimitedToTen implements PotentiallyLimited {
private static final OptionalInt LIMIT = OptionalInt.of(10);
@Override
public final OptionalInt getLimit() {
return LIMIT;
}
}
在这种情况下,将变量存储为常量可以避免每次生成新实例
一个类,其中某些依赖项将返回一个可选的
,但可能不存在
class Thing {
private static final Optional<String> DEFAULT_PREFERENCE = Optional.of("blue");
private final @Nullable PreferenceProvider provider;
public void useDependency() {
final Optional<String> preference;
if (dependency != null) {
preference = provider.getPreference();
} else {
preference = DEFAULT;
}
// Use the preference here...
}
}
类的东西{
private static final Optional DEFAULT_PREFERENCE=Optional.of(“蓝色”);
私有最终@Nullable PreferenceProvider;
公共void useDependency(){
最终选择优先权;
if(依赖项!=null){
preference=provider.getPreference();
}否则{
偏好=默认;
}
//在这里使用首选项。。。
}
}
同样,将其作为常量意味着您不需要在每次调用时创建新实例
我看到的最后一个例子是,假设您有一个接口,它有一种布尔isError();
和一个额外的可选getErrorReason()有一个总是表示错误的实现是完全合理的,然后再次显式地从已知常量字符串设置可选值有助于避免创建大量实例
我敢肯定,在很多其他情况下,这样做可能会有用。我不明白。与什么相反?它是“无用的”。^^它在隔离状态下几乎没有价值,但可能由于某些外部环境而需要。与任何其他常量值一样,如“foo”
或1
或null
或false
。有什么问题吗?当然,在您的示例中,您可以使用可选。Of nullable
True,但我想指出可选。Of
和可选。empty
之间的区别,我太累了,想不出更好的示例:-)