在 Java 中使用注释将所有参数设为最终参数

weg*_*gry 5 java annotations lombok

我最近一直在使用 Lombok,我想知道是否可以提供一个类级别或方法级别注释,为所有参数添加最终值。例如:

@finalizer
void foo(Bar bar);
Run Code Online (Sandbox Code Playgroud)

成为

void foo(final Bar bar);
Run Code Online (Sandbox Code Playgroud)

maa*_*nus 2

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

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

AFAIK 有强制final参数的工具。

如果在 Java 中一切都是final默认的并且可以通过使用类似var. 但这个想法来得太晚了 20 年。