Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java编程中可选.of(“xxxx”的值 请考虑以下java代码: Optional.of("some.constant.value")_Java_Java 8_Optional - Fatal编程技术网

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
之间的区别,我太累了,想不出更好的示例:-)