출처: http://devday.tistory.com/1535 (izeye님)

참고하면 좋음: http://rainflys.tistory.com/102
 


Java에서 2개 이상의 리턴 값을 어떻게 전달할까?

C나 C++처럼 포인터도 없고 C#처럼 out 키워드도 없다.

물론 방법은 많다.

마음에 드는 것이 없어서 그렇지.

우선 리턴 값의 모음으로 데이터 클래스를 만들 수 있다.

문제는 이런 상황이 올 때마다 데이터 클래스를 만들어야만 하는 문제가 있다.

다음으로 Object[]로 넘기는 방법을 고려할 수 있다.

문제는 캐스팅을 해야만 한다는 것이고, 또 개수가 늘어나면 가독성이 심하게 떨어진다.

그래서 선택한 방법이 다음과 같은 방식이다.

물론 여전히 100% 만족스럽진 못하지만.

public class OutParam<T>
{
    private T result;
    public void set(T result)
    {
        this.result = result;
    }
    public T get()
    {
        return result;
    }

    @Override
    public String toString()
    {
        return result.toString();
    }
}
Generic을 사용해서 C#의 out 파라미터를 흉내낸 것이다.

메소드 정의 예:

void test(String a, String b, OutParam<string> outC, OutParam<string> outD)
{
    ...
    outC.set(something);
    outD.set(somethingElse);
}
메소드 호출 예:

OutParam<string> outC = new OutParam<string>();
OutParam<string> outD = new OutParam<string>();
test(a, b, outC, outD);
System.out.println(outC.get());
System.out.println(outD.get());


====================================================
여기까지 원본
====================================================

위의 참고 하면 좋은 링크 참고하면 좋고,

개인적으로 C# 스타일이 마음에 들기 때문에

izeye님 방식이 마음에 드네요.