검색결과 리스트
글
출처: http://devday.tistory.com/1535 (izeye님)
참고하면 좋음: http://rainflys.tistory.com/102
Java에서 2개 이상의 리턴 값을 어떻게 전달할까? C나 C++처럼 포인터도 없고 C#처럼 out 키워드도 없다. 물론 방법은 많다. 마음에 드는 것이 없어서 그렇지. 우선 리턴 값의 모음으로 데이터 클래스를 만들 수 있다. 문제는 이런 상황이 올 때마다 데이터 클래스를 만들어야만 하는 문제가 있다. 다음으로 Object[]로 넘기는 방법을 고려할 수 있다. 문제는 캐스팅을 해야만 한다는 것이고, 또 개수가 늘어나면 가독성이 심하게 떨어진다. 그래서 선택한 방법이 다음과 같은 방식이다. 물론 여전히 100% 만족스럽진 못하지만.
====================================================
여기까지 원본
====================================================
위의 참고 하면 좋은 링크 참고하면 좋고,
개인적으로 C# 스타일이 마음에 들기 때문에
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님 방식이 마음에 드네요.
RECENT COMMENT