2013-07-24 24 views
0

我想從類的方法返回一個int和一個列表。但我不能成爲那個班的對象。所以我應該怎麼做。如何從java中的方法返回整數或int和列表?

我試着這樣做:

 List listofObj = new ArrayList(); 
     List list1 = some code that i can't share; 
     Integer total = some integer value; 

     listOfObj.add((List) list1); 
     listOfObj.add((Integer) total); 

     return listofObj; 

但是當我使用它在另一個類 -

 if (listOfObj != null && listOfObj.size() > 0) { 

      List mainList = promoData.get(0); --- gives error 
     count = (Integer) promoData.get(1); 
     } 

所以我想這---

 if (listOfObj != null && listOfObj.size() > 0) { 
      Map promoData = (Map) listOfObj; 
      List mainList = (List) promoData.get(0); 
      count = (Integer) promoData.get(1); 
     } 

,但它仍然當我點擊應用程序時出錯。

錯誤:java.lang.ClassCastException:java.util.ArrayList中不能轉換爲java.util.Map

+1

「_gives error_」 - >錯誤消息始終包含有價值的信息。永遠不要忘記發佈它。 – jlordo

+0

什麼樣的ArrayList是listOfObj?現在添加 – AndMim

+0

錯誤 – newProgramer

回答

2

您可以使用一對類

public class Pair<X,Y> { 
    public final X first; 
    public final Y second; 

    public Pair(X first, Y second) { this.first = first; this.second = second; } 

    public static<XX,YY> of(XX xx, YY yy) { return new Pair<XX,YY>(xx, yy); } 
} 

然後定義你的方法如下:

public Pair<List, Integer> myMethod() { 
    List someList = ...; 
    int someInt = ....; 
    ... 
    return Pair.of(someList, someInt); 
} 

在主叫方:

Pair<List, Integer> pair = myMethod(); 
List mainList = pair.first; 
int count = pair.second; 

如果你有Guava庫你可以從那裏使用Pair類。

如果你想使用的地圖,你就必須做一個垂頭喪氣其值:

public Map<String, Object> myMethod() {  
    List someList = ...; 
    int someInt = ....; 
    ... 
    Map<String, Object> map = new HashMap<String, Object>(); 
    map.put("list", someList); 
    map.put("count", someInt); 
    return map; 
} 

在主叫方:

Map<String, Object> map = myMethod(); 
List mainList = (List) map.get("list"); 
int count = (Integer) map.get("count"); 
+0

可以使用地圖代替。如果是,你可以請建議如何。謝謝 – newProgramer

+0

更新了答案。請再看一下。 –

1

有幾種可能性:

首先,您可以創建一個包含Listintclass

下一個可能性是返回一個Object[]。這樣做的缺點是你失去了類型安全。

第三種可能性是將該列表提供給方法調用並填充它並僅返回int

1

兩個解決方案,我腦子裏浮現:

  1. 做有一個int和一個ArrayList類,並返回該類的實例。我會推薦這個。
  2. 在您的方法之外初始化ArrayList並將其作爲參數發送。該方法必須僅返回int值,因爲對ArrayList所做的更改將在您的方法之外看到。