-1

每次我调用 private staticsClass x = new sClass()aClass,我都想在sClassfrom中存储信息(数组),aClass例如aClass实例化的时间。这甚至可能吗?什么是最正确的面向对象解决方案?(如果有多个,请问您是否可以列出它们)

我有这样的事情:

private static sClass x = new sClass();

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

4

1 回答 1

1

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

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

根据您的需要,您可能有一个私有的 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. 放置一个对象数组可能会占用不需要的内存(您可以选择回收数组元素,只需查找对象池模式)。
于 2013-03-10T21:58:30.887 回答