Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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 Lambda表达式找不到符号_Java_Lambda_Java 8 - Fatal编程技术网

Java Lambda表达式找不到符号

Java Lambda表达式找不到符号,java,lambda,java-8,Java,Lambda,Java 8,这里没有什么奇怪的: 2类。java和Lambdas.java public class Lambdas { public static void main(String[] args) { new Lambdas().start(); } public void start(){ Interface f = () -> Interface{System.out.println("test");} } } public interface Interfa

这里没有什么奇怪的: 2类。java和Lambdas.java

public class Lambdas {
  public static void main(String[] args) {
    new Lambdas().start();
  }

  public void start(){
    Interface f = () -> Interface{System.out.println("test");}
  }
}

public interface Interface {
     void test();
}
我在主线程java.lang.RuntimeException中得到错误:异常:不可编译的源代码-找不到符号 符号:变量接口 位置:类lambdas.lambdas。 我不知道为什么

p.S.刚从2014 Java Day回来,我用了他们的例子——用netbeans,你的语法是错误的

Interface f = () -> System.out.println("test");

@大卫康拉德不,你没有。@大卫康拉德不,你是对的,这是必要的。我还惊讶地发现它发生了变化。@DavidConrad JLS仍然非常清楚地指出lambda主体是单个表达式或块,因此编译器比规范更具权限。即使方法返回void,方法调用也是“单个表达式”。在根据Java语言的语法解析源代码时,返回类型之类的东西并不重要,它们将在后面的步骤中进行评估:“如果函数类型的结果为void,则lambda主体为语句表达式或void兼容块。”方法调用为“语句表达式”。正确阅读正式规范可能会非常棘手……我发现一个邮件列表表明我的理解至少已经过时两年了,所以再次感谢assylias纠正我的错误!从2012年6月6日开始:下一个EDR将包括对void方法作为表达式体的支持