java - 如何在 MyClass 的构造函数中将 MyClass 类型的实例添加到在 MyClass 中声明的 MyClass 数组?
问题描述
为了跟踪实例,我们有一个数组 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 参数。
但是,当然,整个想法都是不好的做法。一个类有不同的责任。您正在承担另一个责任(计算/列出实例)。所以除了你的代码容易造成内存泄漏之外,它还违反了单一责任原则。
如果你想跟踪某些对象,那么有另一个类来保存这些列表并在那里显式地注册新创建的对象。
推荐阅读
- python - 在单个 tkinter 按钮上绑定 2 个图像
- python - 通过 XMLHTTPRequest 收集 HTML 页面中的 ono 来电状态
- c# - 无法重新创建从 Postman 到 C# 的 REST API 调用
- python-3.x - 如何使用 tf.data.Dataset 对象的 map 方法删除或省略数据?
- python - AttributeError:“浮动”对象没有属性“预测”
- javascript - 如何从JavaScript中的对象数组中创建数组数组而不是分块数组
- amazon-web-services - 将 TF 状态文件从本地迁移到 S3 后端时出错
- angularjs - null 和 undefined 是否被归类为 typescript 中其他类型的子类型?
- ios - AVPlayerViewController 不支持 iPhone 上的画中画
- python-3.x - 关于''django dropbox''静态上传错误的问题“cStringIO”