为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的“最终”关键字是如何工作的?(我仍然可以修改对象。)

Java中的“最终”关键字是如何工作的?(我仍然可以修改对象。)

斯蒂芬大帝 2019-06-25 15:51:05
Java中的“最终”关键字是如何工作的?(我仍然可以修改对象。)在Java中,我们使用final关键字中指定其值的变量不被更改。但我看到您可以更改类的构造函数/方法中的值。同样,如果变量是static那就是编译错误。以下是代码:import java.util.ArrayList;import java.util.List;class Test {   private final List foo;   public Test()   {       foo = new ArrayList();       foo.add("foo"); // Modification-1   }   public static void main(String[] args)    {       Test t = new Test();       t.foo.add("bar"); // Modification-2       System.out.println("print - " + t.foo);   }}以上代码工作正常,没有错误。现在将变量更改为static:private static final List foo;现在这是一个编译错误。这怎么final真的有用吗?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

你总是被允许初始化 a final变量。编译器确保您只能执行一次。

中存储的对象调用方法。final变量与final..换言之:final只涉及引用本身,而不是引用对象的内容。

Java没有对象不可变的概念;这是通过仔细设计对象来实现的,这是一项非常重要的工作。


查看完整回答
反对 回复 2019-06-25
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

最终关键字有多种使用方式:

  • 决赛

    班级,等级

    不能被子类化。
  • 决赛

    方法

    不能被子类重写。
  • 决赛

    变量

    只能初始化一次

其他用途:

  • 当在方法的主体中定义匿名内部类时,该方法范围内声明为Final的所有变量都可以从内部类中访问。

一个静态类变量从JVM开始就存在,并且应该在类中初始化。如果这样做,将不会出现错误消息。


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 381 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号