【问题标题】:What's the difference between final parameters and non-final ones in Java? [duplicate]Java中的最终参数和非最终参数有什么区别? [复制]
【发布时间】:2015-02-18 07:31:24
【问题描述】:

我已经阅读了一些源代码。在 util 包中,我看到了很多“final”关键字的用法。比如 PrefUtil.java 中有一个方法:

public static void setAttendeeAtVenue(final Context context, final boolean isAtVenue) {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
    sp.edit().putBoolean(PREF_ATTENDEE_AT_VENUE, isAtVenue).commit();
}

在这个方法中,所有参数都被'final'修改。我在其他地方遇到过一些这样的案例。但我不明白'final'的效果。所以,我在这里寻求帮助以消除我脑海中的问题。

【问题讨论】:

    标签: java parameters final


    【解决方案1】:

    final on 参数将阻止方法内部的代码重写它。

    重写参数值是不好的做法,因为维护这样的代码非常困难。

    【讨论】:

    • 是的,我想我明白了。我也有类似的问题,其网址在这里:stackoverflow.com/questions/2236599/…
    • 是的,但不会重写参数。所以'final'是不必要的,对吧?
    • @LittlePanpc,好吧,方法可以快速增长,所以final 是为了保护参数免受未来更改的影响。但是,在我的项目中,final on params 很少使用。
    【解决方案2】:

    final 表示一旦分配了该变量的值,就无法更改它

    在这些方法中使用final 作为参数意味着它不允许程序员在方法执行期间更改它们的值。

    【讨论】:

      【解决方案3】:

      使用final 可确保传递的引用 不会被重新分配。您可以修改参考指向的对象。因此,您的对象不是不可变的,它仍然是可变的,但不能重新分配引用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-25
        • 2013-03-02
        • 2018-05-14
        • 2013-11-25
        • 1970-01-01
        • 2014-01-23
        • 2013-01-22
        相关资源
        最近更新 更多