這可能是一個非常愚蠢的問題。但是有沒有一種方法可以返回多個對象?比如說,2弦?如何讓方法返回多個對象?
public static String multipleReturnMethod(){
String a = "a";
String b = "b";
return a;
return b;
}
可能嗎?不可能?你如何使它有可能?
這可能是一個非常愚蠢的問題。但是有沒有一種方法可以返回多個對象?比如說,2弦?如何讓方法返回多個對象?
public static String multipleReturnMethod(){
String a = "a";
String b = "b";
return a;
return b;
}
可能嗎?不可能?你如何使它有可能?
你可以返回一個數組...
public static String[] multipleReturnMethod(){
String a = "a";
String b = "b";
return new String[] { a, b };
}
或列表,或者封裝了兩個值的類型,等等
只能從方法返回一個值,但是這個價值本身可以允許訪問多個「子值」。
如果您可以提供有關您要做什麼的更多信息,我們可能會提供更多幫助。
如果多個對象的類型相同(如上所述),這將起作用。在不同類型的更一般情況下,需要包裝類。該數組還具有調用者需要知道哪個索引涉及特定值(0 = a,1 = b)的缺點。 –
@John:這取決於他們是否具有不同的具有特定意義的價值觀,或者它是否真的是「第一價值,第二價值」等。很難知道OP究竟在做什麼。 (「不同類型」由「封裝兩個值的類型」覆蓋)。 –
不可能沒有chaning返回的對象:
可以創建一個類是:
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");
}
或者返回數組
public static String[] multipleReturnMethod(){
return new String[] { a, b };
}
的一種方式是將輸出對象傳遞給你的方法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
}
輸出必須要你的方法之外創建的。
「返回輸出」不會編譯。 –
不僅如此......你試圖返回一個ArrayList
我的壞 - 我不應該做複製/粘貼匆匆。 – LordDoskias
這在Java中是不可能的。您必須圍繞要返回的元素創建一個包裝類,並返回該單個元素幷包含要返回的所有內容。
FunctionalJava有一個方便的產品類P,使這很容易。 http://functionaljava.googlecode.com/svn/artifacts/3.0/javadoc/fj/P.html
return P.p(a,b);
這是不可能返回一個以上的對象,永遠不會! 解決方法是返回一個包含要返回的對象的對象。
如果你想保留簽名,你可以連接具有一個定義分隔符的字符串:
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;
}
(雖然我更喜歡量變到質變的簽名,並返回一個數組或值的集合,看到喬恩的答案)
如果你有一個更復雜的例子,你可以使用監聽器模式
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混合或組合的類型。
如果它們都是相同類型的對象,那麼最簡單的方法是隻返回一個類型的對象的數組
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;
}
不可能的,而不是使用'java.util.List的' –
進行其他類型的這些值返回。 Java是一種面向對象的語言,但人們喜歡找到不製造對象的方法。 = D – Tejs