HashMap类中的最终方法

时间:2018-10-15 10:31:37

标签: java hashmap final

我只是在openJDK8中浏览了HashMap的源代码,并想了解,尽管将TreeMap类(静态最终类TreeNode)声明为final,但该类中仍有一些方法被声明为final-希望理解的意义。

由于该类被标记为final,因此该类无法扩展,因此其方法也不能被覆盖,我已经看过oracle docs,它说有时从构造函数调用的方法需要声明为final ,但有些方法尚未从构造函数中调用,但仍被声明为final。所以任何人都可以帮助我理解。

下面的链接具有完整的代码:

http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/HashMap.java

2 个答案:

答案 0 :(得分:0)

方法声明中使用的

final关键字与类声明中使用的final关键字具有不同的用途。

最终方法:-您可以将某些或所有类的方法声明为final。您可以在方法声明中使用final关键字,以指示该方法不能被子类覆盖。 Object类可以执行此操作-它的许多方法都是最终的。

最终课程:-您也可以声明整个课程的最终成绩。声明为final的类不能被子类化。例如,在创建诸如String类之类的不可变类时,这特别有用。

来源:-https://docs.oracle.com/javase/tutorial/java/IandI/final.html

答案 1 :(得分:0)

“ final”关键字用于方法声明中,以指示该方法不能被子类覆盖。

除此之外,它还有一些性能优势:

最终方法可以在装入JVM后内联,因为那时候JVM绝对知道该方法是最终方法。因此,在类加载后运行的编译器(例如JIT编译器)可以利用最终方法。因此,声明为final的方法可能会带来一些性能上的好处。”

尽管具有性能优势,但最重要的使用目标是“清晰的设计”。在HashMap中使用它来指示这些方法将不会被子类覆盖,因为以这种方式保证了它们的实现