繁体   English   中英

jGRASP是否支持Java Lambda表达式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM