2011-09-14 34 views
1

這可能是一個非常愚蠢的問題。但是有沒有一種方法可以返回多個對象?比如說,2弦?如何讓方法返回多個對象?

public static String multipleReturnMethod(){ 

    String a = "a"; 
    String b = "b"; 

    return a; 
    return b; 
} 

可能嗎?不可能?你如何使它有可能?

+0

不可能的,而不是使用'java.util.List的' –

+4

進行其他類型的這些值返回。 Java是一種面向對象的語言,但人們喜歡找到不製造對象的方法。 = D – Tejs

回答

6

你可以返回一個數組...

public static String[] multipleReturnMethod(){  
    String a = "a"; 
    String b = "b"; 
    return new String[] { a, b }; 
} 

或列表,或者封裝了兩個值的類型,等等

只能從方法返回一個值,但是這個價值本身可以允許訪問多個「子值」。

如果您可以提供有關您要做什麼的更多信息,我們可能會提供更多幫助。

+0

如果多個對象的類型相同(如上所述),這將起作用。在不同類型的更一般情況下,需要包裝類。該數組還具有調用者需要知道哪個索引涉及特定值(0 = a,1 = b)的缺點。 –

+0

@John:這取決於他們是否具有不同的具有特定意義的價值觀,或者它是否真的是「第一價值,第二價值」等。很難知道OP究竟在做什麼。 (「不同類型」由「封裝兩個值的類型」覆蓋)。 –

3

不可能沒有chaning返回的對象:

  1. 可以創建一個類是:

    class Strings { 
        String a, b; 
        Strings(String a, String b) { 
         this.a = a; 
         this.b = b; 
        } 
    } 
    
    public static Strings multipleReturnMethod(){ 
        return new Strings("a", "b"); 
    } 
    
  2. 或者返回數組

    public static String[] multipleReturnMethod(){ 
        return new String[] { a, b }; 
    } 
    
-1

的一種方式是將輸出對象傳遞給你的方法d,例如在一個ArrayList的形式,所以它會是這樣的:

當然
public static ArrayList<String> multipleReturnMethod(ArrayList<String> output) { 

String a = "a"; 
String b = "b"; 

output.add(a); 
output.add(b); 
return output; //not really necessary 
} 

輸出必須要你的方法之外創建的。

+1

「返回輸出」不會編譯。 –

+0

不僅如此......你試圖返回一個ArrayList 作爲一個字符串... '公共靜態ArrayList multipleReturnMethod(「...」)' –

+0

我的壞 - 我不應該做複製/粘貼匆匆。 – LordDoskias

0

這是不可能返回一個以上的對象,永遠不會! 解決方法是返回一個包含要返回的對象的對象。

1

如果你想保留簽名,你可以連接具有一個定義分隔符的字符串:

public static final String DELIMITER = "\t"; // or something else 
               // not used in strings 

public static String multipleReturnMethod(){ 

    String a = "a"; 
    String b = "b"; 

    return a + DELIMITER + b; 
} 

(雖然我更喜歡量變到質變的簽名,並返回一個數組或值的集合,看到喬恩的答案)

0

如果你有一個更復雜的例子,你可以使用監聽器模式

interface ResultListener { 
    void resultOne(String text); 
    void resultTwo(String text, int number); 
} 

public static void multipleReturnMethod(ResultListener result){ 
    result.resultOne("a"); 
    result.resultOne("b"); 
    result.resultTwo("C", 1); 
} 

正如你可以看到你可以結果的任意組合返回CA ller混合或組合的類型。

1

如果它們都是相同類型的對象,那麼最簡單的方法是隻返回一個類型的對象的數組

public static String[] methodA(){ 
    String[] temp = new String[5]; 
    // do work 
    return temp; 
} 

如果你想返回不同類型的對象,然後返回一個對象的ArrayList 。

public static ArrayList<Object> methodB(){ 
    ArrayList<Object> temp = new ArrayList<Object>(); 
    // do work 
    return temp; 
} 
相關問題