【问题标题】:Marking method parameter final, value of [duplicate]标记方法参数final,[重复]的值
【发布时间】:2012-05-14 13:09:18
【问题描述】:

在本例中,声明 Object final 提供什么价值?

private void doSomethingClever(final Object o) {

}

【问题讨论】:

    标签: java


    【解决方案1】:

    这样做的目的是让其他访问您的代码的人知道参数无法更改。如果他们设置了一个值会导致编译器错误。

    【讨论】:

      【解决方案2】:

      也就是说,使用它告诉读者和编译器 方法中不会修改参数。

      有用的链接:

      【讨论】:

      • 感谢 Naveed。很好的参考
      【解决方案3】:

      您将无法在该方法中分配给o

      当有一个内部类(例如 listener 或一些可运行的对象访问此局部变量)时非常有用。

      【讨论】:

        【解决方案4】:

        说实话,我并没有真正看到在方法参数中使用 final 的意义。 final 只会保证变量不会指向另一个对象,而不是对象本身不会是不可变的...您可以更改对象 o 的状态,但不能将 o 分配给另一个对象,例如 B

        o = new Object();
        

        Object b = new Object();
        o=b;
        

        但调用

        o.doSomething();
        

        很好。那么为什么到处都是丑陋的最终关键字使代码混乱呢?

        至于性能优化,我相信即使方法参数中没有 final 关键字,现代编译器也会分析和优化代码。有人愿意纠正我吗,因为我不是 100% 确定这一点!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-14
          • 1970-01-01
          • 1970-01-01
          • 2014-03-01
          • 2013-12-17
          • 2018-01-22
          • 2015-07-19
          • 2011-05-08
          相关资源
          最近更新 更多