LomBok @Delegate 를 이해하기위해서 학습테스트 해보았습니다......(영어가 약하고 소스 상에서 테스트를 찾아보기 어지러워서 ) --;;;;
https://github.com/rzwitserloot/lombok http://projectlombok.org/features/Delegate.html http://gitblog.ihoney.pe.kr/blog/2013/01/23/use-lombok-annotation-in-java-project/
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.util.List;
import lombok.Delegate;
import org.junit.Test;
import com.google.common.collect.Lists;
public class Lombok_Delegate_학습_Test {
@Test(expected=NullPointerException.class)
public void 초기화는해야하네요(){
class Bean{
@Delegate List<String> 초기화되지않은리스트;
}
Bean bean=new Bean();
bean.get(0);
}
@Test(expected=IndexOutOfBoundsException.class)
public void 빈리스트(){
class Bean{
@Delegate List<String> 빈리스트=Lists.newArrayList();
}
Bean bean=new Bean();
bean.get(0);
}
@Test
public void 리스트행위(){
class Bean{
@Delegate List<String> 리스트=Lists.newArrayList();
}
Bean bean=new Bean();
bean.add("문자열");
assertThat(bean.get(0), is("문자열"));
//.....
}
@Test
public void 리스트_FooList(){
BeanWithFooList bean=new BeanWithFooList();
//bean.get(0); 컴파일 에러
}
/*@Delegate 속성 들 테스트 를 위해 작성*/
static class BeanWithFooList{
private interface FooList{
//다음줄을 주석 풀면 컴파일 오류
//List 에 존재하지 않는 메서드는 넣을 수없음
//void aaa();
//다음을 주석 풀면
//단순하게 이클립스상에서 파라메터의 이름을 arg0 이런식으로 나타내지 않기 위해 사용됨 ㅡㅡ;
//void add(String item)
}
@Delegate(types=FooList.class) List<String> 리스트=Lists.newArrayList();
}
static class BeanWithBarList{
private interface 구현하지않을메서드{
int size();
}
@Delegate(excludes=구현하지않을메서드.class) List<String> 리스트=Lists.newArrayList();
}
static class Bean2{
//아래 주석을 둘다 제거 하면 컴파일 에러
//@Delegate List<String> 리스트=Lists.newArrayList();
//@Delegate List<String> 리스트2=Lists.newArrayList();
}
}
1개의 의견 from SLiPP
이런식으로 메서드 명을 변경 할 수 있도록 해주었으면 좋겠네요...
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.