getter setter不返回任何java

uemypmqf  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(358)

我的第一个列表1和列表显示了正确的值,但第二个列表1没有显示任何值:

public class IcsList {
ArrayList<String> list1= new ArrayList<String>();
public ArrayList<String> list(ArrayList list){
     this.list1= list;
    Log.i("list1", "" + list1);
    Log.i("list", "" + list);
    setList();
     return list;
}
public ArrayList setList(){
    Log.i("list1", "" + list1);
    return list1;
   }

这是我的日志:

04-27 21:45:10.094  31548-31597/com.parse.starter I/list﹕ [B Soccer @ Liberty, Apr 28 2015 5:30 PM, KGHS Athletics, G Soccer v Liberty (home), Apr 28 2015 5:30 PM, KGHS Athletics
04-27 21:45:10.133  31548-31597/com.parse.starter I/list1﹕ [B Soccer @ Liberty, Apr 28 2015 5:30 PM, KGHS Athletics, G Soccer v Liberty (home), Apr 28 2015 5:30 PM, KGHS Athletics
 04-27 21:45:10.133  31548-31548/com.parse.starter I/list1﹕ []

顺便说一下,我正试图在另一个类中使用这个arraylist,方法是将字符串值添加到该类中的数组列表中。setlist()是否可以将其设为空?我应该说“return this.list1”吗。顺便说一下,另一个类中有一个arraylist,我正在调用list.(arraylist)。将在另一个类中调用getter来检索此arraylist。这门课就像是两者之间的接力。
在第一节课中,我在icslist中设置了arraylist:

ArrayList<String> arrayList = new     ArrayList();
 //add to arrayList
 IcsList list = new IcsList();
 list.list(arrayList);

从icslist检索的类:

ArrayList<String> arrayList = new     ArrayList();

 IcsList list = new IcsList();
arrayList=  list.setList();
e0bqpujr

e0bqpujr1#

泰勒:根据你自己最后的回答-你有一些误解:
类icslist具有静态列表1。这意味着所有示例共享同一个list1 arraylist。因此,无论何时何地使用您的类,它总是同一个list1对象。
更奇怪的是,在icslist的构造函数中初始化这个list1。这意味着在创建至少一个icslist示例之前,list1为空。这是不切实际和混乱的。更糟糕的是,每一个新的icslist()都会用新的、空的arraylist更新这个list1。这也很奇怪。
上一段代码显示您创建了list2,然后立即重写它list1引用。这也没有道理。
我想你想要的是:

public class IcsList {
private ArrayList<String> list1;
   public IcsList(){
      list1 =new ArrayList<String>();
   }

   public static ArrayList<String> getList1(){
      return list1;
   } 
}

第二个是对的(假设蜂蜜是“蜂蜜”),第三个是对的

ArrayList<String> list2= = icsList.getList1(); // this is list1 from existing object icsList
if (list2.contains(honey)) System.out.println("honey is here");
if (icsList.getList1().contains(honey)) System.out.println("honey is still here");
ny6fqffe

ny6fqffe2#

对于任何陷入困境的人,我的盖特·塞特:

public class IcsList {
static ArrayList<String> list1;
public IcsList(){
    list1 =new ArrayList<String>();}

public static ArrayList<String> getList1(){
return list1;
} }

我在icslist类中添加到arraylist的位置:

IcsList icsList= new IcsList();
ArrayList<String> arrayList= icsList.getList1();
arrayList.add(event);
arrayList.add(honey);
arrayList.add(happy);

在其中检索要在另一个类中使用的arraylist:

ArrayList<String> list2= new ArrayList();
list2= IcsList.getList1();

我把它描述成一个“中继系统”

6uxekuva

6uxekuva3#

你没有提供完整的代码。看起来像是在示例化对象列表之后从另一个地方调用setlist()。
我之所以看到它是因为如果您按原样运行代码(假设将其余部分添加为至少编译),那么logcat的所有3行都是相同的。然而,他们都是不同的,甚至第一和第二。
我的建议是在每个输出中添加特定的细节。至少方法名或堆栈跟踪,您将看到区别-谁在调用和何时调用-并且不会有混淆。

相关问题