Java 将ArrayList传递给另一个类
我和ArrayList有点麻烦。我需要做的就是将一个填充的ArrayList传递给另一个类,这样我就可以在那里使用ArrayList的值。下面是第一节课的一个片段:Java 将ArrayList传递给另一个类,java,class,collections,arraylist,Java,Class,Collections,Arraylist,我和ArrayList有点麻烦。我需要做的就是将一个填充的ArrayList传递给另一个类,这样我就可以在那里使用ArrayList的值。下面是第一节课的一个片段: public ArrayList<String> collCollect = new ArrayList<String>(); for (int i = 0; i < ListModel.size(); i++) { collCollect.add(ListModel.get(i).to
public ArrayList<String> collCollect = new ArrayList<String>();
for (int i = 0; i < ListModel.size(); i++) {
collCollect.add(ListModel.get(i).toString());
}
System.out.println(collCollect);
public ArrayList collCollect=new ArrayList();
对于(int i=0;i
在这部分之前,一切都进行得很顺利(我去掉了其余的代码!)
现在是棘手的部分!这是第二节课:
ClassA pMain;
DecimalFormat f = new DecimalFormat("#0.00");
public ArrayList<String> listContent = new ArrayList<String>(pMain.collCollect);
DefaultListModel<String> ListModelNew = new DefaultListModel<String>();
public static void main(String args[]) {
for (int i = 0; i < listContent.size(); i++){
ListModelNew.add(i, listContent.get(i));
}
}
a类pMain;
DecimalFormat f=新的DecimalFormat(“0.00”);
public ArrayList listContent=新的ArrayList(pMain.collCollect);
DefaultListModel ListModelNew=新的DefaultListModel();
公共静态void main(字符串参数[]){
对于(int i=0;i
每次加载ClassB时,我都会从pMain中对数组的引用所在的行中得到一个NullPointerException
我无法从ClassA ArrayList获取到ClassB-。-
ClassA pMain的值代码>//此处未初始化对象
pMain.collCollect
//这里是NullpointerException
public ArrayList<String> listContent = new ArrayList<String>(pMain.collCollect);
^__see here
到
需要在第二个类中创建ClassA
的实例。我建议在main方法中创建它,这样ClassA
就不会依赖于第二个类
DecimalFormat f = new DecimalFormat("#0.00");
public ArrayList<String> listContent;
DefaultListModel<String> ListModelNew = new DefaultListModel<String>();
public static void main(String args[]) {
ClassA pMain = new ClassA();
listContent = new ArrayList<String>(pMain.collCollect);
for (int i = 0; i < listContent.size(); i++){
ListModelNew.add(i, listContent.get(i));
}
}
DecimalFormat f=新的DecimalFormat(#0.00”);
公共ArrayList列表内容;
DefaultListModel ListModelNew=新的DefaultListModel();
公共静态void main(字符串参数[]){
ClassA pMain=新ClassA();
listContent=newarraylist(pMain.collCollect);
对于(int i=0;i
这可以进一步重构:
DecimalFormat f = new DecimalFormat("#0.00");
DefaultListModel<String> ListModelNew = new DefaultListModel<String>();
public static void main(String args[]) {
ClassA pMain = new ClassA();
for (int i = 0; i < pMain.collCollect.size(); i++){
ListModelNew.add(i, pMain.collCollect.get(i));
}
}
DecimalFormat f=新的DecimalFormat(#0.00”);
DefaultListModel ListModelNew=新的DefaultListModel();
公共静态void main(字符串参数[]){
ClassA pMain=新ClassA();
对于(int i=0;i
您只需声明变量pMain
,但从不为其赋值。因此,它将被初始化为null
,当您试图访问它时,它会给您一个NullPointerException
您必须像ClassA pMain=new ClassA()
那样声明它,或者在别处赋值。如果您在其他地方赋值,请确保删除listContent
的直接初始化,您的ClassA pMain
未实例化。您需要创建ClassA的实际实例,如下所示:
ClassA pMain = new ClassA();
由于您正试图获取该类(collCollect)的公共属性,因此也可以通过ClassA中的构造函数或对新创建的ClassA实例调用某些方法来获取该类的公共属性。而不是将实例化器放在类的顶部:
public ArrayList<String> listContent = new ArrayList<String>(pMain.collCollect);
public ArrayList listContent=新的ArrayList(pMain.collCollect);
重写第二个类的构造函数,并将其传递到其中:
public ClassB(ArrayList<String> pMain) {
this.listContent = pMain.collCollect;
}
public类b(ArrayList pMain){
this.listContent=pMain.collCollect;
}
@Ben,
可以将数组初始化代码保存在ClassA的collCollectInit()中。在第二个类中,创建ClassA对象作为ClassA pMain=new ClassA();pMain.collCollectInit();如果collCollect是ClassA中的公共引用或受保护引用,则使用pMain.collCollect。请使用getter和setter方法访问类变量。好的,我一定是瞎了眼,没有初始化ClassB中的ClassA…现在已经修复了。但是ListModelNew没有任何内容,它被打印为“[]”,因此我认为ClassA中的ArrayList没有将值正确地传递给ClassB中的ArrayList listContent您需要初始化pMain
<代码>ClassA pMail=新ClassA()代码>非常奇怪的代码!你能发送完整的代码吗?你能粘贴堆栈跟踪吗?我忘了初始化ClassA--好的,但是现在ListModelNew没有添加任何内容?!?!标准输出打印显示“[]”?!?我越来越糊涂了
public ArrayList<String> listContent = new ArrayList<String>(pMain.collCollect);
public ClassB(ArrayList<String> pMain) {
this.listContent = pMain.collCollect;
}