我在阅读 LinkedHashMap 源代码时遇到了内部最终类 LinkedKeyIterator。此外,我在 java 的源代码中看到了很多相同的代码。
是这样的:
final class LinkedKeyIterator extends LinkedHashIterator
implements Iterator<K> {
public final K next() { return nextNode().getKey(); }
}
我们知道无法扩展最终类,因此我们无法覆盖方法。
为什么 next 方法声明为 final?
最佳答案
根据 JLS§8.4.3.3 这纯粹是文档/强调:
A
private
method and all methods declared immediately within afinal
class (§8.1.1.2) behave as if they arefinal
, since it is impossible to override them.
作为Pshemo说in a comment , 方法是否被声明 final
可以通过反射来确定,编译器不会自动将其添加到签名中。因此,使方法显式 final
可以改进文档,直至反射级别。
关于java - 在 Java 的最终类中声明 final方法的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32035279/