gpt4 book ai didi

java - lambda 表达式中的变量赋值

转载 作者:行者123 更新时间:2023-12-01 18:00:55 24 4
gpt4 key购买 nike

我有以下代码片段:

    SomeClass someClass;
switch (type) {
case FIRST:
someClass = new SomeClass();
break;
case SECOND:
OptionalLong optional = findSomeOptional();
optional.ifPresent(value -> someClass = new SomeClass(value));
}

我试图将新对象分配给 lambda 表达式中的 someClass 引用,但随后我收到错误消息:“lambda 中使用的变量应该是有效的最终变量”.

当我将 final 添加到 someClass 的声明中时,我收到另一个错误“无法为最终变量赋值”

那么我怎样才能巧妙地处理 lamda 中的此类分配呢?

最佳答案

简单的答案是您不能在 lambda 表达式中分配来自上层的局部变量。

您可以将变量转换为实例成员,或者使用简单的 if 语句:

SomeClass someClass;
switch (type) {
case FIRST:
someClass = new SomeClass();
break;
case SECOND:
OptionalLong optional = findSomeOptional();
if(optional.isPresent()) {
someClass = new SomeClass(optional.getAsLong());
}
}

最后一个选项是使用 AtomicReference

关于java - lambda 表达式中的变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com