java - 为编译的匿名内部类添加了“final”
问题描述
我有一个简单的 Java 类,其中包含一个匿名内部类:
package stackoverflow;
public class Outer
{
public static void main(final String[] arguments)
{
System.out.println(new Object() {});
}
}
With mvn compile
runningjavap 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
进入结果文件。.class
Errorprone(在我的项目中)使用 Java 9 进行编译,而普通项目使用 Java 8。请参阅https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.9。 5和https://docs.oracle.com/javase/specs/jls/se9/html/jls-15.html#jls-15.9.5。
解决方案
推荐阅读
- excel - 用户窗体中几个命令按钮的唯一代码
- jenkins - Unbale 使用 git 参数插件检索 git 引用。创建构建时出现以下错误
- github - 如何在 github 操作中编写 pr 构建检查?
- php - SQL 从数组中删除条目作为源
- node.js - 如何为 Firebase 推送通知生成设备令牌?
- python-3.x - 似乎无法让蓝牙代理在 Raspberry Pi 中工作
- dns - 带有子域的 Cloudflare DNS
- javascript - 我导入但不能使用它 ReactJS
- javascript - Socket Array 不存储套接字客户端数据并在每个客户端数据到达时继续重置
- sql - 基于多表sql的select语句