jGRASP是否支持Java lambda表达式?

时间:2016-02-06 07:56:44

标签: java lambda jgrasp

我已经在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 tutorial here中Calculator计算器示例的简化版本。如果我使用整个Calculator程序,则会发生同样的事情:编译但无法找到要运行的主方法;但使用lambda表达式注释掉行,它运行正常。同样对于我正在努力的其他计划;使用lambda表达式编译的任何单行都会导致程序无法找到main方法。

这是jGRASP,我的Java安装,还是我的理解或其他问题?我该如何解决这个问题?

编辑:还有一些数据点:如果我有jGRASP显示UML图,那么带有lambda表达式的类被唯一标记为"外部类或接口" (没有lambda表达式,它通常标记为" Project Class")。

如果我尝试通过jGRASP创建一个JAR文件,使用正则表达式,最初jGRASP找不到主类;但是一旦我指定它,就会制作JAR类,并且我可以从jGRASP外部以我想要的行为成功运行它。

1 个答案:

答案 0 :(得分:0)

我使用的是jGRASP的过时版本(从2013年开始,在2014年将lambda表达式引入Java之前,我相信)。将我的jGRASP安装更新到当前版本,清除了在编译lambda表达式时查找main类的问题。

所以:,jGRASP目前支持lambda表达式(至少版本为2.0.1_09)。但不,它不是在Java中出现lambda表达式之前(版本2.0.0_03之后的某个时间)。