java - 局部变量在类的方法中成为最终变量——但为什么呢?

标签 java

今天在谷歌搜索一段代码时,我看到了一个问答博客,其中说我们可以在类的方法中声明一个局部变量为final。然而,作者不愿意解释这样做的必要性/好处。

喜欢

public class A
{
 private void show()
 {
  final String s="checking";
 }
}

我会寻求 Java 专家的帮助来教育我这方面的知识。在此先感谢您的支持和指导。

最好的问候!

最佳答案

除了其他答案之外,使变量 final 允许在类和接口(interface)的内联实现中使用该变量:

final String test = "test";

foo = new Foo() {
        public void bar() {
            System.out.println(test);
        }
    };

编辑: 如果您是初学者,可能还值得指出的是,变量 实际上是对实例引用。当你创建一个变量 final 时,你实际上是在创建引用常量,也就是说,final 变量在初始化后永远不能引用其他实例。这不会声明实际的引用实例 是否是常量。

例如,如果你说 final String[] foo = { "bar", baz"}可以foo[0] = "sheep " 即使 foofinal。你不能做的是将 foo 变量引用到其他东西,比如 foo = new String[]...foo = someOtherArray。这与可变性不变性 有关,这些概念是有点类似于 final,所以它们可能值得研究一下。

关于java - 局部变量在类的方法中成为最终变量——但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931406/

相关文章:

java - 如何修复android工具栏中的重复项目(需要删除工具栏上的菜单项)?

java - 将图像放在 Java 中随机创建的按钮上

java - Spring MVC 在 JSP 中迭代映射列表

java - Servlet 到 MYSQL 连接

java - 在每次迭代中设置不同的变量名称

java - 双重检查锁定从 checkstyle 中消失了——为什么?

java - uniVocity 不会将第一列解析为 bean

java - Java中捕获进程输出的简洁方法

java - 在 JUnit/JPA/Hibernate/Struts 和 Spring 集成测试中保持 session 打开 - 无 session 或 session 关闭 - LazyInitialization 异常

java - 使用私有(private) boolean 值禁用和渲染组件 - 其他方式