[英]Does jGRASP support Java lambda expressions?
我在jGRASP中工作了一段时间,刚刚开始使用Java中的lambda表达式。 我可以使用lambda表达式编译程序,但是当我尝试运行它们时,总是会出现此错误:
在文件中找不到主要方法,小程序或MIDlet
示例程序:
public class SquareComputer {
interface IntegerMath {
int operation(int a);
}
public int operateUnary(int a, IntegerMath op) {
return op.operation(a);
}
public static void main(String... args) {
SquareComputer myApp = new SquareComputer();
System.out.println(myApp.operateUnary(3, a -> a*a));
}
}
如果我在最后一行注释掉,那么程序将按预期编译并运行(当然不执行任何操作)。
请注意,该程序是此处Oracle教程中 Calculator示例的简化版本。 如果我使用整个计算器程序,则会发生相同的事情:编译但找不到要运行的主要方法; 但是使用lambda表达式注释掉这些行,它运行良好。 同样,对于我真正在做的其他程序; 用lambda表达式编译的任何一行都导致程序无法找到main方法。
这是jGRASP,我的Java安装,我的理解或其他问题吗? 我该如何解决呢?
编辑:其他几个数据点:如果我让jGRASP显示UML图,则将带有lambda表达式的类唯一地标记为“外部类或接口”(没有lambda表达式,则通常将其标记为“项目类”)。
如果我尝试使用正则表达式通过jGRASP创建JAR文件,则最初jGRASP无法找到主类; 但是一旦指定了它,就可以创建JAR类,并且可以从jGRASP外部以所需的行为成功运行它。
我使用的是jGRASP的过时版本(我相信从2013年开始,直到2014年将lambda表达式引入Java之前)。 将我的jGRASP安装更新到当前版本可以解决编译lambda表达式时查找主类的问题。
所以: 是的 ,jGRASP当前不支持lambda表达式(至少在版本2.0.1_09中)。 但是不,它不是在Java中出现lambda表达式之前(有时在版本2.0.0_03之后)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.