java - 为什么AbstractList的源代码中listIterator参数应该是final的?

标签 java list api

当我查看java API的源代码时,我就是不明白为什么这个参数应该是final的?

    public ListIterator<E> listIterator(final int index) {
    rangeCheckForAdd(index);

    return new ListItr(index);
}

这是 AbstractList 的第 324 行。谢谢

最佳答案

final 表示该方法不能更改参数的值。这主要用作代码内文档/限制,使编译器将修改它的尝试转变为错误。对于编译器和/或 JVM 来说,出于优化目的,它也可能是有用的信息;例如,他们不必应用静态分析来查看参数是否从未改变,你已经强制这是真的。当使用常量值调用方法调用时,例如在 listIterator() 的实现中,这可能是特别有用的信息。 (不带参数),简单来说就是:return listIterator(0);

关于java - 为什么AbstractList的源代码中listIterator参数应该是final的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35671157/

相关文章:

java - 具有按钮和文本的 GWT 小部件?

android - 在 Android 设备上查看传感器列表

python - 如何返回字典中某个值的频率列表

javascript - 未使用 JSONP API 中的信息创建对象

java - 想知道我是否正确地进行了这个不变性练习

java - 为静态方法设置 AspectJ 建议

java - Eclipse 不会自动设置 "Import"语句

delphi - 将对象列表保存在文本文件中

api - OpenGraph API 用户对象有时会返回 404 错误的链接

javascript - 将对象内的对象集合从 js 传递到 C#