2009년 02월 01일
Varargs를 이용한 가변함수 사용 (JAVA SDK 1.5 버젼부터 지원)
Varargs란? : SDK 1.5 이전버젼에서는 메소드의 가변인수가 허용되지 않기 때문에 해당 메소드를 모두 구현해 주거나(오버로딩), 배열을
인수로 받아 처리하였다.(정말 번거롭다) 자바 SDK 1.5버젼 이후에는 이런 번거로움을 없애기 위해 C의 Printf 함수와 같이
가변 인수를 갖는 메소드를 구현 할 수 있도록 지원한다.
예) public void setAMethod(Object... obj){ ....생략 }
놀랍지 않나요? 이런 ...이 들어간 문법이 실제로 가능하다니..
호출할때는 아래의 항목들이 모두 유효하답니다.
setAMethod(new Integer(1));
setAMethod(new Integer(1), new String("테스트"));
setAMethod(new UserBean("test",1), new UserBean("test2","2"));
시나리오 : Action의 Form에서 전송된 Request.Parameters의 값들의 유효성을 확인하는 로직이 자주 사용된다.
이러한 유효성을 확인하는 로직의 파라미터의 갯수와 시그니쳐가 매번 다르기 때문에 반복적으로 코딩해줘야 하는
불필요한 비용이 발생하였다. 이러한 부분을 Varargs를 사용하여 개선 할 수 있다.
BaseAction에 아래의 메소드를 구현한다.
public boolean setValidateParams(Object... orj){
boolean retval=true;
for(int i = 0 ;i < orj.length){
...유효성확인로직
if(!(orj[i]!= null & orj[i].length>0)){
retval=false;
break;
}
}
return retval;
}
BaseAction을 상속받은 ClientAction1을 정의한다.
public String ClientAction1 (){
if(super.setValidateParams(param1,param2,param2)==true){
...//비즈니스 로직 수행
}
else{
return ERROR;
}
return SUCCESS;
}
BaseAction을 상속받은 ClientAction2를 정의한다.
public String ClientAction2(){
if(super.setValidateParams(param1)==true){
..//비즈니스 로직 수행
}
else {
return ERROR;
}return SUCCESS;
}
# by | 2009/02/01 16:52 | JAVA 향기 | 트랙백 | 덧글(0)








☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]