簡體   English   中英

Getter Setter一無所獲-Java

[英]Getter Setter Returns Nothing-Java

我的第一個list1和列表顯示正確的值,但是第二個list1不顯示任何值:

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();

泰勒:根據您對自己的最新回答-您有一些誤解:

IcsList類具有靜態list1。 這意味着所有實例共享相同的一個list1 ArrayList。 因此,無論何時何地使用您的類-它始終是同一list1對象之一。

更奇怪的是,您可以在IcsList的構造函數中初始化此list1。 這意味着除非您創建至少一個IcsList實例,否則list1為null。 這是不切實際和令人困惑的。 更糟糕的是,每個新的IcsList()都會使用新的空數組ArrayList更新此list1。 這也很奇怪。

您的最后一個代碼顯示您創建了list2,然后立即覆蓋它。 這也沒有意義。

我假設你想要的是:

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");

您沒有提供完整的全面代碼。 好像在實例化對象IcsList之后從另一個地方調用setList()。

我看到它是因為,如果您按原樣運行代碼(假設將其余部分至少進行編譯),那么logcat的所有3行都將是相同的。 但是它們都是不同的,即使是第一和第二。

我的建議是為每個輸出添加特定的詳細信息。 至少是方法名稱或堆棧跟蹤,您將看到區別-誰在調用和何時調用-並且不會造成混淆。

對於處於這種困境的任何人,我的接手者:

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();

我將其描述為“中繼系統”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM