传递给另一个班级时空arraylist

时间:2013-12-05 07:52:02

标签: java arraylist

我在一个班级中制作了一个arraylist但是当我将它传递给另一个班级时它是空的。在一个类中有元素,但在另一个类中它是空的。

这是我在一个班级中的代码。

System.out.println(mot);
Paint p=new Paint(mot, start );

这是我在另一个班级的代码

ArrayList<String> motif;
ArrayList<Integer> number;
NewJFrame j=new NewJFrame();

public Paint(ArrayList<String> motif,ArrayList<Integer> number) {
   initComponents();
   motif=new ArrayList();
   number=new ArrayList<>();
   j=new NewJFrame();
}

public void paint(Graphics g) {
   System.out.print(j.mot);
}

请告诉我如何解决空的arraylist问题?

5 个答案:

答案 0 :(得分:2)

更改以下代码行:

motif=new ArrayList();
number=new ArrayList<>();

this.motif = motif;
this.number = number;

答案 1 :(得分:1)

这两行创建了listes的新实例,尝试更改它们:

motif=new ArrayList();
number=new ArrayList<>();

这会更好:

this.motif = motif;
this.number = number;

答案 2 :(得分:1)

尝试addAll

 public Paint(ArrayList<String> pMotif,ArrayList<Integer> pNumber) {
    initComponents();
    motif=new ArrayList();
    motif.addAll(pMotif); //use addAll 
    number=new ArrayList<>();
    motif.addAll(pNumber); //use addAll 

答案 3 :(得分:1)

您正在覆盖这些行中新(空)版本的motifnumber副本

motif=new ArrayList();
number=new ArrayList<>();

如果要将类成员设置为空ArrayList,请使用this引用它们:

this.motif = new ArrayList();
this.number = new ArrayList<>();

如果要将它们设置为传入的ArrayLists,请执行以下操作:

this.motif = motif;
this.number = number;

另一种选择是复制传入的ArrayLists中的值:

this.motif = new ArrayList(motif);
this.number = new ArrayList<>(number);

答案 4 :(得分:1)

您将值传递给另一个类,因此您应该告诉编译器使用当前对象,即此对象.....

您使用Constructor分配值因此,alwayz使用“this”或“super”(这是构造函数中的第一个语句)

使用

this.motif = motif; this.number = number;