카테고리 없음

[java] 메서드가 둘 이상의 객체를 반환하도록하는 방법은 무엇입니까?

행복을전해요 2020. 12. 15. 05:35

배열을 반환 할 수 있습니다 ...

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

(서명을 변경하고 배열 또는 값 모음을 반환하는 것을 선호하지만 Jon의 답변을 참조하십시오)

-------------------

모두 동일한 유형의 객체 인 경우 가장 간단한 방법은 해당 유형의 객체의 배열을 반환하는 것입니다.

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
     }
     

물론 출력은 메서드 외부에서 만들어야합니다.



출처
https://stackoverflow.com/questions/7415129