【问题标题】:Statics and OOP help in Java [closed]Java中的静态和OOP帮助[关闭]
【发布时间】:2013-03-10 21:49:26
【问题描述】:

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

我有这样的事情:

private static sClass x = new sClass();

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

【问题讨论】:

  • 什么是“静态”类?您的意思是“静态内部”类,因为没有静态独立类之类的东西吗?
  • 请显示一些代码来说明您尝试过的内容。
  • 抱歉,我对术语的细微之处不是很熟悉。我的意思是静态内部。
  • @John:让我们避免“可能”。请显示代码。编程是一门严谨的科学,因此我们需要问题中的准确信息才能给出合理的答案。

标签: java oop class static


【解决方案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. 放置一个对象数组可能会占用不必要的内存(您可以选择回收数组元素,只需查找对象池模式即可)。

【讨论】:

    猜你喜欢
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2013-05-03
    • 1970-01-01
    • 2012-07-01
    • 2014-06-18
    相关资源
    最近更新 更多