我在一个班级中制作了一个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问题?
答案 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)
您正在覆盖这些行中新(空)版本的motif
和number
副本
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;