Java 中不同包中的类之间共享配置

问题描述 投票:0回答:1

假设我有 3 个班级:

JSONReader
Configuration
Worker
。 使用
JSONReader
设置
Configuration
的字段。 通过 Worker,我从
Configuration
获取字段数据。
所以这里是读者的例子......

public class JSONReader {
    //Read json file and it's data...
    Configuration config = Configuration.getInstance();
    config.getInstance().setURISource(reader.get("uriSource"));
}

这是我的配置类

public class Configuration{
    private Configuration(){}
    private static Configuration instance = null;

    private final String uriSource;

    public static synchronized Configuration getInstance()
    {
        if (instance == null)
            instance = new Configuration();

        return instance;
    }

    public String setURISource(String uri){
        this.uriSource = uri;
    }

    public String getURISource(){
        return uriSource;
    }
}

这里是工人...

public class Worker {
    \\Doing some stuff, at certain point I need to get the data..
Connection connection = new Connection();    
connection.setConnection(Configuration.getInstance().getURISource()/*and other data*/);
}

我使用了单例的方法,验证了在我的阅读器和工作线程中获取

Configuration
实例的哈希码...哈希码返回相同的值。 但是,getter 为 null,就像变量在我的阅读器中设置后为 null 一样。

有什么建议吗?有想法吗?

java singleton
1个回答
1
投票

那是因为你打电话给

getInstance()
两次。

config.getInstance().setURISource(reader.get("uriSource"));

相反,您可以直接执行以下操作:

config.setURISource(reader.get("uriSource"));

此外,变量不能是

final

© www.soinside.com 2019 - 2024. All rights reserved.