我想在java中声明一个对象,就像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中可能吗?如何做呢 ?
在 Java 中,您只能拥有对对象的引用。要获得对引用的引用,您需要某种间接方式。例如
AtomicReference<DatabaseSettings> refDatabaseSettings = new AtomicReference<DatabaseSettings>();
refDatabaseSettings.set(dbSettings);
DatabaseSettings dbSettings = refDatabaseSettings.get();
您可以传递 ref 并在一处更改它。但是,这不会通知任何引用它已更改,只是允许所有引用在下次检查时看到相同的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)