java - 如何将 MyClass 类型的实例添加到 MyClass 数组(在 MyClass 的构造函数内声明)?

标签 java arrays class object instance

为了跟踪实例,我们有一个数组 MyClass[] mc = new MyClass[5];

我想在构造函数调用本身期间保存在此数组中创建的 MyClass 实例。

类似这样的事情:

public class MyClass{
  private static final int MAX_SIZE = 64;
  private static int number = 0;
  private static MyClass[] classList= new MyClass[MAX_SIZE];


  public MyClass(MyClass mc) { 
    classList[number++] = mc;
  }

  public static void main(String[] args) {
  MyClass mc1 = new MyClass(mc1);
}

但这不起作用,因为我收到了预期的“mc1 可能未初始化”错误,tbh。

现在,我知道我们可以创建另一种方法来将创建的类的实例保存在数组中,但是这种“保存类的实例”符合类的自身利益,并且不想强制类的用户调用此方法。因此找到一种方法在 const 本身中完成这个工作。

我该如何去做呢?提前非常感谢! :)

求好友。

最佳答案

您可以在构造函数中执行此操作:

classList[number++]  = this;

而且根本就没有那个 mc 参数。

当然,整个想法都是不好的做法。一个类有明确的职责。您在其中添加了另一项责任(计算/列出实例)。因此,除了您的代码很容易造成内存泄漏之外,它还违反了单一责任原则。

如果您想跟踪某些对象,则需要一个另一个类来保存此类列表并在那里显式注册新创建的对象。

关于java - 如何将 MyClass 类型的实例添加到 MyClass 数组(在 MyClass 的构造函数内声明)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52509917/

相关文章:

java - 通过添加 JAR 文件 Openshift 磁盘配额已满

java - 单击按钮时将 fragment 添加到寻呼机适配器

python - 对 numpy 数组中的不同列进行过滤和求和

c++ - () = 类中的运算符重载

python tkinter calender,放置数字

java - 无法使用 float 按钮 AlertDialog 在 SQLite 数据库中插入数据

python - 如何使用 pandas DataFrame 的值作为 numpy 数组索引

javascript - 如何使用 JQuery 从列值数组创建 HTML 表

c++ - 派生类中的模板方法优于非模板方法

java - 添加光照 glLightfv 方法不起作用