Java代码

时间:2016-07-09 14:41:01

标签: java eclipse spring rest spring-boot

我将在https://spring.io/guides/tutorials/bookmarks/

处使用Spring Tutorial构建REST服务

我陷入了困境。在class Application中,有一段令人毛骨悚然的代码:

return (evt) -> Arrays.asList(
"jhoeller,dsyer,pwebb,ogierke,rwinch,mfisher,mpollack,jlong".split(","))
.forEach(
a -> {
Account account = accountRepository.save(new Account(a,
"password"));
bookmarkRepository.save(new Bookmark(account,
"http://bookmark.com/1/" + a, "A description"));
bookmarkRepository.save(new Bookmark(account,
"http://bookmark.com/2/" + a, "A description"));
});

我真的不知道那里发生了什么。 evt来自哪里,没有相关的导入。 ->运算符在Java中做了什么。我从未在Java中使用过这个运算符。首先是否有任何运营商?

即使是我的日食也说了同样的事情

  

evt无法解析为变量

似乎没有人在互联网上提出类似的问题,我搜索了很多。我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

这是Java 8语法(lambda表达式,即一种匿名函数),根据您的描述,您似乎不熟悉Java 8.您可能仍在运行Java 7或更早版本。您可以使用java -version命令检查Java版本。

关于evt:在 lambda表达式中定义了,大致相当于:

new Consumer<Event>() {
    @Override
    public void accept(Event evt) {
        for (String a: Arrays.asList("jhoeller,dsyer,pwebb,ogierke,rwinch,mfisher,mpollack,jlong".split(",")) {
            Account account = accountRepository.save(new Account(a,
                    "password"));
            bookmarkRepository.save(new Bookmark(account,
                    "http://bookmark.com/1/" + a, "A description"));
            bookmarkRepository.save(new Bookmark(account,
                    "http://bookmark.com/2/" + a, "A description"));
        }
    }
}

如果要运行该代码,则必须下载并安装新版本的Java。如果您已经在使用Java 8,那么您可能需要正确配置系统。

从您的评论中我收集到您正在使用Eclipse。首先,您必须使用能够处理 Java 8(Luna或更新版本)的Eclipse,然后在Eclipse中选择正确的JDK(Preferences - &gt; Java - &gt; Installed JREs),并设置项目与Java 8的源兼容级别(项目的属性 - &gt; Java编译器 - &gt; JDK合规性)。