【问题标题】:How to add multiple values to an Object ArrayList? [closed]如何将多个值添加到对象 ArrayList? [关闭]
【发布时间】:2023-03-22 16:28:01
【问题描述】:

问题应该出在createClass()方法上……用classes.add(this)有错吗?

private static ArrayList<VirtualClass> classes = new ArrayList<VirtualClass>();
private boolean isPrivate;
private String className;
private String methodName;

public void setVirtualClass(String name, String method, boolean isP){
    this.className = name;
    this.isPrivate = isP;
    this.methodName = method;
}

public void createClass(String name, String method, boolean isP){
    this.className = name;
    this.isPrivate = isP;
    this.methodName = method;
    classes.add(this);
}

更多问题详情:Failed to store values in ArrayList of class object. (CODE EDITED)

【问题讨论】:

  • 你想在“类”列表中添加什么?
  • 不要一次又一次地问同样的问题。学习使用调试器,并逐步执行代码以了解实际执行的内容。它本身并没有错,但它看起来不像是好的设计。无论如何,静态可变变量总是很臭。
  • 你的问题应该是独立的:有什么问题?

标签: java class oop object arraylist


【解决方案1】:

我想你想记录所有创建的类?

在构造函数中传递this 通常是不好的做法,因为根据定义,this 尚未构造。在这种情况下,我认为它不会引起问题,但它肯定闻起来不对。

我会考虑使用static 工厂方法或其他形式的工厂模式,以便您可以分开对象创建和实例存储。

【讨论】:

    【解决方案2】:

    除非你说出你想做什么,否则没有人能告诉你这是对还是错。

    如果你正在做的事情是这样的:(假设你的班级被称为 Foo)

    Foo foo = new Foo();
    
    foo.createClass("Blablabla", "method1", true);
    foo.createClass("AnotherClass", "method2", true);
    

    类似的东西,那么是的,你可能错了。因为您所做的只是更改具有不同属性的唯一 Foo 实例,并将相同的对象添加到列表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 2019-02-18
      • 1970-01-01
      相关资源
      最近更新 更多