假设我有 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 一样。
有什么建议吗?有想法吗?
那是因为你打电话给
getInstance()
两次。
config.getInstance().setURISource(reader.get("uriSource"));
相反,您可以直接执行以下操作:
config.setURISource(reader.get("uriSource"));
此外,变量不能是
final
。