这方面的资源少得惊人,但是,当我在最新的 Java (21) 上编译代码时,我的很多类都遇到了这个错误。
这里是引入此新警告的 JDK Bug 系统条目 - https://bugs.openjdk.org/browse/JDK-8299995
长话短说,
this-escape
警告是在子类可能能够@Override
在超类的构造函数中调用的方法时向您发出警告。
这是危险的,因为重写构造函数中使用的方法会导致子类在子类初始化期间无意中引入错误。如果该方法依赖于尚未创建的状态,因为我们仍在超级构造函数中怎么办?毕竟,在调用超级构造函数之前,您不能在子类的构造函数中执行任何操作(目前)。
有几种方法可以解决这个问题。
仅使用构造函数中不能被重写的方法。
static
方法。
final
方法。
创建课程本身
final
。