我要声明在java中的对象,就像AA指针在C++中的指针,让我告诉你一个例子(参照参考)对象的所有引用:更新当对象被更新
//*** At the application startup
//Initialize a settings container class
Settings settings = //Load settings
//Declaring static Application class that contain a reference to the settings container
Application.setSettings(settings);
//Get sub settings from settings container class
DatabaseSettings dbSettings = settings.getDbSettings();
LogSettings logSettings = settings.getLogSettings();
//Initialize components
DatabaseConnector dbConn = new DatabaseConnector(dbSettings);
Logger logger = new Logger(logSettings);
在上面的代码中,我已创建了含有我的应用程序组件的所有设置的设置容器类,然后我有程序的执行过程中分配每个子设置类现有部件,在这一点我要更新的设置,让应用程序的组件看到更新的设置,所以例如在执行期间我可以用这种方式更新设置容器:
//Update settings through Application static class
Settings newSettings = //assign updated settings
Application.setSettings(newSettings);
现在的问题是,当我在运行时更新设置容器应用静态类将包含更新参考newSettings
实例,同时各子设置实例保持引用旧子设置,因此:
dbConn ---> settings.getDbSettings()
logSettings ---> settings.getLogSettings()
虽然我想,两个参考自动参考的设置新实例,所以:
dbConn ---> newSettings.getDbSettings()
logSettings ---> newSettings.getLogSettings()
它就像一个指针,指针......是否有可能在Java中?如何做呢 ?
如果你传递相同的对象,它会引用内存中的同一个对象,实际上它是一个指针。 – 2012-01-16 15:48:48
你可以做的是使用单例模式来确保你使用一个设置对象或者一个观察者模式来将观察者更新到你的observable(设置类) – 2012-01-16 15:49:53
即使singleton模式不能保证工作,它依赖于DatabaseConnector和Logger的构造函数是做什么的。如果他们从配置中复制字段,那么即使更新配置,这些对象也不会看到更改。在这种情况下,唯一的选择是观察员。 – Hiro2k 2012-01-16 16:03:25