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

简单lambda表达式代码中出现“AssignmentOperator表达式”错误

史修谨
2023-03-14

我现在正在学习如何使用lambda表达式,我已经看到了一些带有简单示例的教程:

(int x) -> x + 5;

但是我的编译器显示这个错误:

Syntax error, insert "AssignmentOperator Expression" to complete Expression

我是不是忘了什么?

共有3个答案

仲孙鸿畴
2023-03-14

正如上面所指出的,问题是您没有对lambda做任何操作。这意味着:

  • 编译器不知道哪个函数接口(例如.java.util.函数.函数)可以推断为 lambda 的类型。
  • 您的代码行是“不是语句”(编译器经常发出的另一条错误消息)。这类似于以下内容:

“你好”

这不是有效的Java。

锺离锦
2023-03-14

Lambdas是不能用作语句的表达式。来自JLS8 15.27:

如果lambda表达式发生在程序中的某个位置,而不是赋值上下文(§5.2)、调用上下文(§5.3)或转换上下文(§5.5),则这是编译时错误。

考虑这个例子:

// functional interface
interface Operator
{  
  int apply(int a, int b);
}  
// method that expects instance of the interface
int calculate(int a, int b, Operator op)
{  
  return op.apply(a, b);
}  
// lambda expression
Operator plus = (a, b) -> a + b; 
// method call
calculate(40, 2, plus);
王旺
2023-03-14

Lambda表达式总是必须分配给函数交互的引用类型(也称为单抽象方法接口)。事实上,它们为详细的匿名类(使用单方法)实现提供了快捷方式。

所以,简单来说,Lambda expression =抽象方法实现(函数接口的)。

例如,您的表达式可以分配给以下功能界面:

public interface MyInterface {//define Functional Interafce (SAM)
    public int someMethod(int a);
}

public class Test {
   public static void main(String[] args) {
        MyInterface myInterface = (int a) -> a +5;//assign the expression to SAM
        int output = myInterface.someMethod(20)); //returns 25
   }
}
 类似资料:
  • 本文向大家介绍java中lambda表达式简单用例,包括了java中lambda表达式简单用例的使用技巧和注意事项,需要的朋友参考一下 我对java中lambda表达式的看法是相当纠结的: 一个我这么想:lambda表达式降低了java程序的阅读体验。java程序一直不以表现力出众,正相反使Java流行的一个因素正是它的安全和保守——即使是初学者只要注意些也能写出健壮且容易维护的代码来。lambd

  • 问题内容: 我有以下代码: 当我通过main方法运行它时,它运行良好,但是当我尝试对其进行编译时,抛出以下错误: 我正在使用Eclipse IDE,并尝试通过命令行进行编译。 问题答案: 默认情况下,使用Java 5来编译类。引用其文档: 还要注意,当前的默认源设置是1.5,默认目标设置是1.5,与运行Maven的JDK无关。如果要更改这些默认值,则应按照设置Java编译器的- source和-t

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

  • 本文向大家介绍简单谈谈python中的lambda表达式,包括了简单谈谈python中的lambda表达式的使用技巧和注意事项,需要的朋友参考一下 最近在coding时发现使用lambda还是有诸多优点的,很多时候代码更整洁,更pythonic,所以在此简单总结一下 1.lambda是什么 举个简单的例子: 两个func的定义是完全相同的,那两种函数定义方法配合map使用,将list中所有元素求平

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

  • 问题内容: Java8中添加了Lambda表达式。我想理解为什么这很重要。对于尚未接触函数式编程习惯的Java程序员意味着什么?这是否意味着我可以编写出性能更好的代码或可大规模扩展的代码,还是只会使代码的详细程度降低。或全部。 问题答案: Oracle已经提供了有关该主题的教程。它列出了几个很好的用例。 在找到链接之前,我要说的是lambda表达式可让您将“函数”传递给代码。因此,您可以更轻松地编