gpt4 book ai didi

java - 使用 Singleton 共享变量

转载 作者:行者123 更新时间:2023-12-01 15:35:21 25 4
gpt4 key购买 nike

我一直很难理解如何使用单例来共享公共(public)变量。我正在尝试制作一个黑莓应用程序,它有两个入口点,需要共享一个公共(public)变量 iconCount。论坛上有人建议我将单例与 RunTimeStore API 一起使用。谷歌搜索最终导致:

http://docs.blackberry.com/en/developers/deliverables/17952/CS_creating_a_singleton_by_using_rutnime_store_1554335_11.jsp

我已经深入谷歌了几页,但我仍然无法理解它的作用以及如何实现它。我目前的理解是单例会通过代码以某种方式创建一个“全局变量”:

class MySingleton {
private static MySingleton _instance;
private static final long GUID = 0xab4dd61c5d004c18L;

// constructor
MySingleton() {}

public static MySingleton getInstance() {
if (_instance == null) {
_instance = (MySingleton)RuntimeStore.getRuntimeStore().get(GUID);
if (_instance == null) {
MySingleton singleton = new MySingleton();

RuntimeStore.getRuntimeStore().put(GUID, singleton);
_instance = singleton;
}
}
return _instance;
}
}

另一个问题是如何从这个单例创建变量?我需要在开始时声明变量 iconCount = 0 然后才能使用它。声明它会像

Integer iconCount = (Integer) RuntimeStore.getInstance(); 

?这对我来说是非常新的,因为我刚刚开始使用 Java,所以如果有人能解释这一点,同时记住你正在与一个新手交流,我将非常感激。提前致谢!

最佳答案

你会打电话

MySingleton.getInstance()

在您的应用程序中获取实例。要点是 getInstance 控制对底层对象的访问。

此外,您应该将构造函数设为私有(private),这样只能在该文件中访问它。

要在单例类上定义属性,只需声明一个非静态属性。该类的每个实例都有自己的副本,但您正在控制对象的创建,因此它们应该仅为 1(每个 JVM)。所以

class MySingleton {
private static MySingleton _instance;
private static final long GUID = 0xab4dd61c5d004c18L;

private Integer iconCount; // non-static method, add a public getIconCount below
...
}

然后您可以通过以下方式访问它

MySingleton.getInstance().getIconCount();

关于java - 使用 Singleton 共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com