Java 8 如何在可选模式中强制转换lambda参数

Java 8 如何在可选模式中强制转换lambda参数,java-8,Java 8,我有一个lambda表达式,如下所示。我想问的是,对于将lambda参数(x)转换为字符串,是否有任何简单的方法或最佳实践 Optional.ofNullable(result).isPresent( x-> { String value = (String) x; }); 当我尝试更改输入类型时,如 String value = (String) x; 我正在犯错误 不可逆类型;无法将lambda参数强制转换为java.lang.String您可以执行安全强制转换: Optiona

我有一个lambda表达式,如下所示。我想问的是,对于将lambda参数(x)转换为字符串,是否有任何简单的方法或最佳实践

Optional.ofNullable(result).isPresent( x-> {
String value = (String) x;
});
当我尝试更改输入类型时,如

String value = (String) x;
我正在犯错误


不可逆类型;无法将lambda参数强制转换为java.lang.String

您可以执行安全强制转换:

 Optional.of(result)
            .filter(String.class::isInstance) // verify that Object is a String
            .map(String.class::cast) // safely cast to String
            .ifPresent( input-> {
                // now input is a String
    });
isPresent()
不接受任何参数。你的意思是
ifPresent()
?结果的类型是什么?如果是
字符串
x
已经是
字符串
。如果不是,则不能将其强制转换为
字符串
,但可以使用
x.toString()
将其转换为
字符串