为什么最终对象可以修改? [英] Why can final object be modified?

查看:108
本文介绍了为什么最终对象可以修改?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我正在处理的代码库中遇到以下代码:

I came across the following code in a code base I am working on:

public final class ConfigurationService {
    private static final ConfigurationService INSTANCE = new ConfigurationService();
    private List providers;

    private ConfigurationService() {
        providers = new ArrayList();
    }

    public static void addProvider(ConfigurationProvider provider) {
        INSTANCE.providers.add(provider);
    }

    ...

INSTANCE宣布为最终。为什么可以将对象添加到INSTANCE?不应该使final的使用无效。 (它没有)。

INSTANCE is declared as final. Why can objects be added to INSTANCE? Shouldn't that invalidate the use of final. (It doesn't).

我假设答案必须用指针和内存做一些事情,但想知道肯定。

I'm assuming the answer has to do something with pointers and memory but would like to know for sure.

推荐答案

'final'只是使对象引用不可更改。它指向的对象不是通过这样做而不可变的。 INSTANCE永远不会引用另一个对象,但它引用的对象可能会改变状态。

'final' simply makes the object reference unchangeable. The object it points to is not immutable by doing this. INSTANCE can never refer to another object, but the object it refers to may change state.

这篇关于为什么最终对象可以修改?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆