gpt4 book ai didi

java - 为什么可以修改最终对象?

转载 作者:IT老高 更新时间:2023-10-28 11:44:13 25 4
gpt4 key购买 nike

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

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 被声明为 final。为什么可以将对象添加到INSTANCE?那不应该使最终的使用无效。 (它没有)。

我假设答案必须与指针和内存有关,但我想确定。

最佳答案

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

关于java - 为什么可以修改最终对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com