java - 在 Java 的最终类中声明 final方法的目的是什么

标签 java oop

我在阅读 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 a final class (§8.1.1.2) behave as if they are final, since it is impossible to override them.

作为Pshemoin a comment , 方法是否被声明 final 可以通过反射来确定,编译器不会自动将其添加到签名中。因此,使方法显式 final 可以改进文档,直至反射级别。

关于java - 在 Java 的最终类中声明 final方法的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32035279/

相关文章:

java - 实例化扩展类或其父类(视情况而定)

Java字节码和没有这样的方法报错

Java类型转换困惑

java - 如何连接在线使用 java 编码托管我的 sql 数据库?

c++ - C++如何在内部实现多态性?

c# - 实例化和接口(interface)

java - 嵌入式 Kafka 以错误数量的分区开始

java - java中的dhtmlx grid.render_table不工作

java - 对具有相同特定实例变量的对象 [在对象数组内] 的实例变量求和

java - 设计一个简单的文件管理器