Java中的静态和OOP帮助

时间:2013-03-10 21:49:26

标签: java oop class static

每次我调用私有静态sClass x = new sClass()时,aClass,我想将信息(数组)存储在sClass的{​​{1}}中,例如aClass {1}}已实例化。这甚至可能吗?什么是最正确的面向对象解决方案? (如果有多个,我问你是否可以列出它们)

我有这样的事情:

aClass

基本上我想使用在sClass中构造aClass的时间,将它保存到数组中,这样我就可以比较每个aClass的开始时间。

1 个答案:

答案 0 :(得分:1)

静态属性是在单个实例中绑定到其父类的属性。

可以将类的新实例存储到静态属性x中(这就是你现在正在做的事情,但x只能容纳1个实例(最新的sClass)你创建并加载到x)的实例。

根据您的需要,您可能拥有私有sClass [] sClassArray(sClass对象数组),而不是静态sClass x,每次创建新的sClass对象时,都将其作为元素加载到数组中

例如,你可以在你的类中保存私有静态x属性:

private static sClass[] sClassArray = new sClass[10]; // Will hold up to 10 sClass objects.

// When you instantiate new instances of sClass objects:

for (int i = 0; i < sClassArray.length; i++) {
    if (sClassArray[i] == null) {
        // Basically load the new sClass object into a slot in the array that hasn't yet been taken.
        sClassArray[i] = new sClass();
        break;
    }
}

然后,下次需要查看实例化的sClass对象时,可以遍历sClassArray []数组。

当然有一些问题:

  1. 为什么需要静态跟踪动态对象?
  2. 坐在周围的对象数组可以占用不需要的内存(您可以选择回收数组元素,只需查找对象池模式)。