使用 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 年。
我最近一直在使用 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 年。