【发布时间】:2012-01-17 18:50:30
【问题描述】:
这可能是一个愚蠢的问题,但却让我陷入了困境。
我已经使用 Java 中的枚举实现了一个单例类(我知道它们是邪恶的),如下所示
public enum Edit {
INSTANCE;
private TreeSet<String> list1 = new TreeSet<String>();
public void createList(Scanner input) {
while (input.hasNext()) {
list1.add(input.next());
}
我的问题是,当您在应用程序中的多个位置使用 createList 方法时,TreeSet 会发生什么情况?
例如说第一次在应用程序中调用 Edit.INSTANCE.createList(),10 个字符串被添加到 list1,现在第二次调用,5 个字符串被添加到 list1....那些新的5 个字符串与之前的 10 个字符串一起添加到 TreeSet,还是将它们添加到完全不同的(新)TreeSet?
我知道单例类的目的是确保该类只有一个全局实例,但这对类成员变量是否成立?上例中 list1 是只有一个副本还是每次调用 createList() 方法都会创建一个新的 TreeSet?
【问题讨论】:
-
在深入研究这些主题之前,先多学习一点 OOP 的基础知识可能是值得的。我的印象是你还没有完全掌握课程是什么。
-
错了,先生,我确实知道什么是类。这是我想要澄清的一个问题,因为我知道单身人士被认为是糟糕的,我想完全理解它们。
-
在这种情况下,您自己回答了这个问题:“我知道单例类的目的是确保该类只有一个全局实例”
-
@Steven Jeuris 也许我的问题没有我希望的那么清楚。它必须对单例中的成员变量做更多的事情,而不是单例本身。请参阅我对 Jon Skeet 回答的评论,了解我问的原因。
标签: java enums arraylist singleton