为什么 Android Studio 4+会推荐 List 设为 final

2020-12-22 15:54:12 +08:00
 QBugHunter
class School{
private List<String> studentNames = new ArrayList<>();
//...
};

之前 3.X 版本没什么问题,但到了 4.X 版本就提示我,该域可以设为 final,即

private final List<String> studentNames = new ArrayList<>();

w 为什么 4.X 版本就推荐我把这种类型的 List 设为 final?

9836 次点击
所在节点    Android
22 条回复
kraits
2020-12-23 17:17:40 +08:00
写了 final 后,不能再有其他的同类型变量指向它,如果这个变量包含在一个类里,new 对象时候它就不能是 null 。
可能楼主对这个 final 有误解,add remove 是这个 类的 method,写了 final 仍然可以调用 method 。这是指针问题
hantsy
2020-12-23 17:41:31 +08:00
@youla 那是 Immutable.

Java 中目前只有 List.of, Set.of, Map.of , 还有 Collections.immutableXXX 创建的 Collection 是无法变更的,有 Immutable 概念。

Guava 有很多补充类。

final 用类的属性上是防止重新(使用=)赋值,用在 类上面是为阻止继承。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX