가변 인자는 C, C++을 사용해본 사람에게는 아주 익숙하다. 왜냐하면 대부분 처음 배우게 되는 예제가 다음과 같기 때문이다. 여기에서 사용된 printf()가 가변인자 함수인데, 예제는 위의것으로 끝나지 않고 가변인자를 사용해 다양한 변수들을 뿌려보는 형태로 점점 진화시켜나간다. 그러면서 데이터 타입이니.. 그런것들을 얘기하게 되는데.. 이게 주 내용이 아니므로, 이 얘기는 여기서 일단 접자. Java에서는 가변 인자가 지원되지 않았었다. 전어도 1.4 까지는 그러했고, 그나마 가변 인자 엇비슷하게 흉내낸것이 배열을 이용한 방법이었다. 이 방법은 인자를 가변적으로 받을 수 있다는 장점은 있었지만, 함수 호출을 위해 반드시 배열 형태로 만들어야 하는 단점이 있었다. 때문에 다음과 같은 메서드도 함께 사용되어야 했었다. 이런식의 메서드는 모두 Java가 가변인자를 지원하지 않기 때문에 생긴 것이다. 그랬는데.. Java가 점점 변화하고 5.0이 되어서는 가변 인자를 공식으로 지원하게 된다. Core Java Technologies Tech Tip의 2005년 11월 15일자에 보면 '가변 arity 메소드'라는 글에서 이에 관한 내용을 설명하고 있다. 글은 varags(가변 인자)와 enhanced for loop에 대해서 설명하고 있는데, 정리하자면 이렇다. 위 예제는 varags와 enhanced for loop의 사용법을 대부분 설명하고 있다. varags는 전달되고 나면 마치 배열처럼 다뤄진다. 즉, varagsMethod는 실제로는 인자를 배열로 받은 vararrMethod와 동일하다. varagsMethod가 기존의 vararrMethod와 다른점은 메서드를 호출할 때 인자의 수를 맞춰서 호출하느냐, 알아서 맞춰주느냐의 차이일 뿐이다. (이 작은 차이가 굉장히 편리하긴 하다. -_-;;) enhanced for loop는 예제에서처럼 varags 뿐만 아니라 배열 인자에 대해서도 기대하는것 처럼 동작한다. 뿐만 아니라, List와 같은 Collection 객체에서도 동일하게 사용할 수 있다.1 다음 코드들은 enhanced for loop의 편리함을 단적으로 보여준다. 만약 Java 5.0 이하에서 동작되어야 하는 코드가 아니라면, 더 이상 가변 인자를 지원하기 위하여 배열을 사용할 필요가 없다. varags와 enhanced for loop가 코드를 더 쉽고 쌍큼하게 만들어 줄 것이다. 아래에 본문에서 사용된 코드의 모든 예제가 포함된 소스를 첨부한다. VaragsTest.javavarags와 enhanced for loop 예제 ![]() "CodeSnipet" 카테고리의 다른 글
|
Trackback URL : http://reznoa.nayana.com/tt/trackback/48
VaragsTest.java



당신의 의견을 작성해 주세요.
http://blog.insightbook.co.kr/entry/%EB%84%88%EB%AC%B4%EB%82%98-%EC%9D%B4%EC%83%81%ED%95%9C-%EC%B1%85-%EB%B3%B4%EB%8B%A4%EA%B0%80-%EB%91%90-%EB%B2%88%EC%9D%B4%EB%82%98-%EC%A7%91%EC%96%B4-%EB%8D%98%EC%A7%84-%EC%B1%85-SICP
내가 예전에 봤던 책이 드디어 한글판으로 나온다..
거의 1년동안 이 책에 미쳐서 지냈었었지.. 너도 기억할껴 아마.. ㅡㅡ;;
너도 꼭 보기를 바란다. 2-3단계 렙업이 될꺼다..