簡體   English   中英

如何讓方法返回多個對象?

[英]How to let method return more than one object?

這可能是一個非常愚蠢的問題。 但是,有一種方法可以返回多個對象的方法嗎? 比如說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 };
}

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

您只能從方法中返回一個值,但是該值本身可以訪問多個“子值”。

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

如果不更改返回對象,則不可能:

  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 }; } 

如果要保留簽名,可以使用定義的定界符將字符串連接起來:

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;
}

(盡管我更喜歡更改簽名並返回數組或值的集合,請參見喬恩的答案)

如果它們都是相同類型的對象,那么最簡單的方法是只返回該類型對象的數組

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中是不可能的。 您必須圍繞要返回的元素創建一個包裝器類,並返回該單個元素並包含要返回的所有內容。

FunctionalJava為產品提供了一個方便的P類,可以簡化此過程。 http://functionaljava.googlecode.com/svn/artifacts/3.0/javadoc/fj/P.html

return P.p(a,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);
}

如您所見,您可以將結果的任何組合以類型的混合或組合返回給調用方。

一種方法是將輸出對象傳遞給您的方法,例如以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
}

當然,必須在方法之外創建輸出。

暫無
暫無

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

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