为了跟踪实例,我们有一个数组 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/