我要聲明在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