gpt4 book ai didi

java - 什么时候应该将 final 用于方法参数和局部变量?

转载 作者:搜寻专家 更新时间:2023-11-01 00:56:39 25 4
gpt4 key购买 nike

我找到了一些建议尽可能多地使用 final 的引用资料 ( for example ),我想知道这有多重要。这主要是在方法参数和局部变量的上下文中,而不是 final方法或类。对于常量,这是显而易见的。

一方面,编译器可以做一些优化,让程序员的意图更加清晰。另一方面,它增加了冗长,优化可能微不足道。

这是我应该努力记住的事情吗?

最佳答案

沉迷于:

  • Final 字段 - 将字段标记为 final 会强制它们在构造结束时设置,从而使该字段引用不可变。这允许安全地发布字段,并且可以避免在以后的读取中需要同步。 (请注意,对于对象引用,只有字段引用是不可变的 - 对象引用所指的内容仍然可以更改,这会影响不可变性。)
  • Final static fields - 虽然我现在在很多我以前使用 static final 字段的情况下使用枚举。

考虑但明智地使用:

  • 期末类(class) - 框架/API 设计是我考虑的唯一情况。
  • final方法 - 与最终类基本相同。如果您正在使用像 crazy 和标记为 final 这样的模板方法模式,您可能过于依赖继承而对委派的依赖不够。

忽略除非感觉肛门:

  • 方法参数和局部变量 - 我很少这样做主要是因为我很懒,而且我发现它会使代码困惑。我完全承认,标记我不打算修改的参数和局部变量是“正确的”。我希望它是默认值。但事实并非如此,我发现代码更难理解,因为 final 遍地都是。如果我在别人的代码中,我不会把它们拉出来,但如果我正在编写新代码,我不会把它们放进去。一个异常(exception)是你必须将某些东西标记为 final 以便你可以访问它来自匿名内部类。

  • 编辑:请注意一个用例,其中 final 局部变量实际上非常有用,如 @adam-gent 所述是在 if/else 分支中将值分配给 var 的时间。

关于java - 什么时候应该将 final 用于方法参数和局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23116670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com