当前位置: 首页 > 知识库问答 >
问题:

lambda表达式中的变量赋值

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

共有1个答案

秦景福
2023-03-14

简单的答案是,不能在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

 类似资料:
  • 如果我们看一下C标准草案第5.1.2节,第2段说: 对lambda表达式的求值会产生一个prvalue临时(12.2)。这个临时称为闭包对象。lambda表达式不得出现在未求值的操作数中(第5条)。[注意:闭包对象的行为类似于函数对象(20.8)。-结束注释] 和节常量表达式第2段说: 条件表达式是核心常量表达式,除非它涉及以下其中一个作为潜在求值子表达式(3.2),但不考虑未求值的逻辑AND(5

  • 本文向大家介绍如何在Java中声明lambda表达式中的变量,包括了如何在Java中声明lambda表达式中的变量的使用技巧和注意事项,需要的朋友参考一下 lambda表达式 是一个函数,期望并接受输入参数,并产生输出结果。它是功能接口 的实例,也称为单个抽象方法接口(SAM 接口),如Runnable,Comparator,Callable 等。我们可以将变量声明为final string []

  • 我想更新一个条目,如下所示: 此代码向我提供了以下错误消息: lambda表达式中使用的变量应该是最终的或有效的最终的 我该如何解决这个问题?

  • 变量 变量的类型: AutoHotkey 中没有明确的变量类型. 然而, 只包含数字 (可以含有小数点) 的变量进行数学运算或比较时, 会被自动转换为数值. (为了提高性能, 在内部会对数字进行缓存以避免与字符串之间的转换.) 变量的作用域和声明: 除了函数中的 局部变量, 其他所有变量都是全局的; 即可以在脚本的任意位置读取或修改它们的内容. 除了在函数页面注明的情况,变量都是不需要声明的;使用

  • (译注:目前支持lambda的gcc编译器版本为4.5,其它详细的编译器对于C++11新特性的支持请参考http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport) Lambda表达式是一种描述函数对象的机制,它的主要应用是描述某些具有简单行为的函数(译注:Lambda表达式也可以称为匿名函数,具有复杂行为的函数可以采用命名函数对象,当然,何谓复杂

  • Lambda表达式在Java 8中引入,并被吹捧为Java 8的最大特性.Lambda表达式有助于函数式编程,并简化了很多开发。 语法 (Syntax) lambda表达式的特征在于以下语法。 parameter -> expression body 以下是lambda表达式的重要特征。 Optional type declaration - 无需声明参数类型。 编译器可以从参数的值推断出相同的