【发布时间】:2021-05-17 21:16:11
【问题描述】:
我想用一个私有的int类型accessCount()来返回通过getInstance()方法访问过Singleton的次数,但是总是报错。这是我的两段代码:
ExampleSingleton.java
public class ExampleSingleton {
private int accessCount;
private static ExampleSingleton instance = new ExampleSingleton();
private ExampleSingleton() {
System.out.println("I, the ExampleSingleton, am being created");
}
public static ExampleSingleton getInstance() {
System.out.println("The sole instance of ExampleSingleton is being retrieved")
}
}
ExampleTest.java
public class ExampleTest {
public static void main(String[] args) {
ExampleSingleton s = ExampleSingleton.getInstance();
System.out.println("The ExampleSingleton has been "
+ "accessed via the getInstance() method "
+ s.accessCount()
+ " time(s)");
s = ExampleSingleton.getInstance();
System.out.println("The ExampleSingleton has been "
+ "accessed via the getInstance() method "
+ s.accessCount()
+ " time(s)");
}
}
所以我可以得到以下输出 output
【问题讨论】:
-
如果它真的是
Singleton,那么为什么要计算? -
你知道你永远不会增加
accessCount对吧?它也应该是静态的。 -
我知道它是一个静态变量,如何增加访问计数?
-
getInstance 是静态的,但如果我添加 accessCount++,错误显示我从静态引用非静态。如果我将 accessCount 设为静态 int,则错误显示找不到 s.accessCount()
-
通过添加关键字使
accessCount变量静态化,还需要将其初始化为 0:private static int accessCount = 0;
标签: java design-patterns singleton