Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 代码正在破坏Eclipse编译器_Java_Eclipse_Lambda_Compilation_Java 8 - Fatal编程技术网

Java 代码正在破坏Eclipse编译器

Java 代码正在破坏Eclipse编译器,java,eclipse,lambda,compilation,java-8,Java,Eclipse,Lambda,Compilation,Java 8,在过分使用lambda表达式的过程中,我创建了以下代码: Supplier<Map<String, Function<UserNetworkEntry, Boolean>>> _groupBuilder = () -> {Arrays.stream(UserType.values()) .collect(Collectors.toMap( value -> value.toStrin

在过分使用lambda表达式的过程中,我创建了以下代码:

 Supplier<Map<String, Function<UserNetworkEntry, Boolean>>> _groupBuilder = () -> {Arrays.stream(UserType.values())
            .collect(Collectors.toMap(
                    value -> value.toString(),
                    value -> (UserNetworkEntry entry) -> entry.userType == value)))
            .putAll(_usersModel._users.stream()
                    .map(user -> user.organization)
                    .distinct()
                    .collect(Collectors.toMap(
                            organization -> organization, 
                            organization -> entry -> entry.organization.equals(organization))));};
        System.notAPartOfTheSystem.println("Hm");
        int word = "String";
正如您可能在最后两行看到的,这真的,真的不应该编译。问题在于它确实如此:根据EclipseNeon,上面的代码类型检查、编译甚至运行。运行时行为也很奇怪;执行_groupBuilder=行之前的方法,但随后该方法安静地返回,而不执行任何进一步的代码。。。不会抛出任何错误。更重要的是,我发现我可以在任何地方复制和粘贴代码,并且会得到相同的行为

顺便说一句,最好不要担心代码要做什么。我知道这很糟糕,这只是我在玩弄的东西

我很确定我在Eclipse/Java编译器中发现了一个bug,但是我想知道更多关于这里发生的事情。特别是,Eclipse的语法检查在放弃之后仍然会对语句进行一些检查——它仍然会识别不匹配的括号,例如,在类型检查器的域中什么都没有


有人能解释一下这里发生了什么吗?

对我来说,在value->UserNetworkEntry entry->entry.userType==value处,需要一个分号,实际上,括号似乎太多了。。。Eclipse在困惑时非常善于把东西弄乱…@ppeterka这听起来像是一个理智的编译器会说的话。您使用的是哪个版本的Eclipse?javac正确地引发了一个错误。用eclipse中的ASM字节码视图来看,它忽略了整个内容。看起来整个内容是由条目中的一个额外括号引起的。userType==值我被名称_groupBuilder误导了,在我所知道的编码约定中,该名称表示一个字段。将代码段粘贴到空类中确实会触发语法错误。但是,如果我将代码片段粘贴到方法体中,问题就可以重现。简化例子总是好的,过分简化会造成很多混乱。。。你已经创建了bug报告了吗?