5 java
基本上,我想创建Counter对象,他们所要做的只是保持数字值.在我的resetCounters方法中,我想重置每个对象的值.这可能很容易,但我是个新手.
public class Counter
{
Random number = new Random();
Counter()
{
Random number = new Random();
}
public Random getNumber()
{
return number;
}
public void setNumber(Random number)
{
this.number = number;
}
public static void main(String[] args)
{
Counter counter1 = new Counter();
Counter counter2 = new Counter();
Counter counter3 = new Counter();
Counter counter4 = new Counter();
Counter counter5 = new Counter();
}
public static void resetCounters()
{
}
}
Run Code Online (Sandbox Code Playgroud)
Counter.收集Counter一些静态集合中的每个实例.要重置所有内容,只需遍历集合中的所有项目即可.但强引用对此来说太强大 - 确保它是弱引用的集合.
备注:
Counter对象无限期存在的问题,因为它们是从静态集合中引用的.仅由弱引用引用的对象最终由垃圾收集器收集.Counter构造函数private并仅允许通过static也将进行注册的成员函数构造来实现.(或者使用工厂模式的其他化身.)我相信工厂是这里的方式,因为物体的每个构造都必须执行副作用.但也许它会使Counter构造函数注册this静态集合.保留static类型的生成计数器long,并在每个实例中保留此计数器的副本.重置所有计数器时,只需增加static生成计数器.getNumber()然后,该方法将static根据其自己的副本检查生成计数器,并在static生成计数器已更改时重置计数器.
(我真的不知道这个技巧的"官方"名称. 如何在O(1)中清零数组?)
| 归档时间: |
|
| 查看次数: |
10868 次 |
| 最近记录: |