当前位置: 首页 > 知识库问答 >
问题:

将对象添加到构造函数中的arrayList

权兴为
2023-03-14

“Bericht”对象的单独类文件的一部分(荷兰语表示消息,包含一个字符串和两个日期):

private ArrayList<Bericht> lijst = new ArrayList<>(); //
//constructor for a new object:
    public Bericht(String bericht, Date startDag, Date eindDag) {
        this.bericht = bericht;
        this.startDag = startDag;
        this.eindDag = eindDag;
       // System.out.println(""+lijst.size())// prints always a "0"
        lijst.add(this);
       // System.out.println(""+lijst.size())//is always one

    }

在我的主方法的某个地方,我从这个类中创建新对象:

 Bericht message = new Bericht(berichtVak.getText(), calendar1.getDate(), calendar2.getDate());
 message.printBerichten(berichtTextArea); //this method prints the String from each Bericht- object in the textarea 

方法“printberichten”迭代数组列表并打印所有消息

   public void printBerichten(JTextArea jta) {
        StringBuffer bfr = new StringBuffer();
        for (Bericht msg : lijst) {
            bfr.append(msg.getBericht()); //this getter method returns the string
        }
        jta.setText(bfr.toString());
    }

getBericht getter方法:

   public String getBericht() {
    return bericht;
}

因此,如果我创建一个新对象,我之前的所有对象都应该显示在text Area中,但我似乎只创建了我的类的一个实例。

在命令“lijst.add(this)”的前后,我添加了一个System.out.println来检查数组列表的大小,其中一个总是返回0,另一个总是返回“1”。

共有2个答案

甄德寿
2023-03-14

将lijst设置为静态:

private ArrayList<Bericht> lijst = new ArrayList<>(); //
    public Bericht(String bericht, Date startDag, Date eindDag) {
        this.bericht = bericht;
        this.startDag = startDag;
        this.eindDag = eindDag;
       // System.out.println(""+lijst.size())
        lijst.add(this);
       // System.out.println(""+lijst.size())

    }
任小云
2023-03-14

根据您的期望,您需要lijst保持静态:

private static ArrayList<Bericht> lijst = new ArrayList<>(); //

printBerichten也可以是静态的,因为它不访问任何成员变量:

public static void printBerichten(JTextArea jta) {

通过将lijst设置为static,Bericht的每个实例在构造时都将添加到单个列表中。当lijist不是静态的时,Bericht的每个实例都会有自己的列表,并且只有单个实例会被添加到该列表中。

 类似资料:
  • 有没有人可以帮助我理解为什么在向一个接受两个参数的类添加了一个新的构造函数之后,项目编译了,但是我的测试现在不能创建这个类的新实例? 我有一个例外: java.lang.nosuchmethoderror:pidac.workflow.testclass。(lcom/pidac/infrastructure/core/service/crudservice;lcom/pidac/infrastru

  • 我创建了一个Author对象,用于构造函数的方法签名:public Book但是,我所做的赋值要求将Author(实例变量)更改为。当然,现在我以前的构造函数不行了。这是密码 如果我上传的方式不令人满意,我对任何不便表示歉意。我还没有学会使用堆栈溢出。 谢谢!

  • 类 类是对某一事物的抽象描述,具体地讲,类是C++中的一种构造的数据类型。它即可包含描述事物的数据,又可包含处理这些数据的函数,类在程序运行时是被用作样板来建立对象的。所以要建立对象,首先必须定义类。 定义类 定义一个类的一般格式为: class 类名{     private:         成员表1;     public:         成员表2;     protected:     

  • 问题内容: 如何将对象添加到数组(使用javascript或jquery)?例如,此代码有什么问题? 我想使用此代码在function1数组中保存许多对象,并调用function2在数组中使用该对象。 如何将对象保存在数组中? 如何将对象放入数组并将其保存到变量? 问题答案: 使用Array.push()将任何东西放入数组。 有关数组的更多信息 一次添加多个项目 将项目添加到数组的开头 将一个数组

  • 我想排序卡,但不知道如何使用构造函数将不同的卡类型与实际变量int类型连接起来。 "将卡的类型设置为类卡中的final static字段,以便可以通过例如卡来调用它们。EFFECT_MONSTER" 不允许枚举。

  • 我试图让类circle扩展Shape类,但JUnit不断出错,说构造函数圆(Point,int)未定义,我如何定义圆构造函数与公共圆(Point[]center,int aradius)不同? 圆圈Java语言