使用 Java 中的注释使所有参数成为最终参数

Making all parameters final with an annotation in Java

我最近一直在使用 Lombok——我想知道是否可以提供一个 class 级别或方法级别的注释,将 final 添加到所有参数。例如:

@finalizer
void foo(Bar bar);

变成

void foo(final Bar bar);

有可能。 Lombok 可以做到,已经有 FieldDefaults 注释允许默认设置所有字段 final。对参数执行此操作会更容易。虽然 final on fields 是 JVM 处理的事情(通过不允许赋值和在构造函数末尾发出写屏障),final on parameters 只是一个编译时特性。

这是不可能的。 Lombok 目前没有这样做,作者的 opinion 是没有意义。

据我所知,有工具强制执行 final 参数。

如果在 Java 中一切都默认为 final 并且可以使用 var 之类的东西覆盖,我个人会非常高兴。但这个想法来得太晚了 20 年。