首页 > 解决方案 > 为编译的匿名内部类添加了“final”

问题描述

我有一个简单的 Java 类,其中包含一个匿名内部类:

package stackoverflow;

public class Outer
{
    public static void main(final String[] arguments)
    {
        System.out.println(new Object() {});
    }
}

With mvn compilerunningjavap Outer*class stackoverflow.Outer$1 {,而 with./gradlew compileJava和 plainjavac我得到final class stackoverflow.Outer$1 {

哪个配置选项导致添加/丢失final

我正在使用 Java 1.8.0_232 (OpenJDK)、Gradle 6.5、Maven 3.6.3 (maven-compiler-plugin:3.6.1)

编辑:虽然这被标记为重复,但您不会在链接的问题中找到答案。在我的情况下,final如果我使用“errorprone”编译,则不会出现。如果我禁用“容易出错”,我也会使用 Mavenfinal进入结果文件。.classErrorprone(在我的项目中)使用 Java 9 进行编译,而普通项目使用 Java 8。请参阅https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.9。 5https://docs.oracle.com/javase/specs/jls/se9/html/jls-15.html#jls-15.9.5

标签: javamavengradlebytecode

解决方案


推荐阅读