2017 - 08 - 28 (월)
참고 도서 : 자바의 정석(남궁성 저, 도우출판)
1 . Annotation
Annotation이란 ?
애너테이션은 @가 붙어서 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속한 형식으로 포함시킨 것이다. 애너테이션은 주석처럼 프로그래밍 언어에 미치는 영향이 없으면서 유용한 정보를 줄 수 있다.
표준 에너테이션
표준 애너테이션 | |
---|---|
@Override | 컴파일러에게 오버라이딩하는 메서드라는 것을 알린다. |
@Deprecated | 앞으로 사용하지 않을 것을 권장하는 대상에 붙인다. |
@SuppressWarnings | 컴파일러의 특정 경고메시지가 나타나지 않게 해준다. |
@SafeVarargs | 지네릭스 타입의 가변인자에 사용한다.(JDK1.7) |
@FunctionalInterface | 함수형 인터페이스라는 것을 알린다.(JDK1.8) |
@Native | native메서드에서 참조되는 상수 앞에 붙인다.(JDK1.8) |
표준 에너테이션 적용
public class AnnotationTest {
public static void main(String[] args) {
Intern i = new Intern();
i.age=20;
@SuppressWarnings("unchecked") // ArrayList 생성시 지네릭스관련 경고를 억제한다.
ArrayList arr = new ArrayList();
i.name=3; // @Depricated가 붙어서 에러발생
}
}
class Intern extends Personnel{
@Override
voic ovt1() {
System.out.println("오버라이딩실패"); // @Override가 붙었는데 Override 시 메서드명이 다를 경우 에러를 표시한다.
}
}
class Regular extends Personnel{
@Override
void ovt() {
System.out.println("오버라이딩");
}
}
class Personnel{
@Deprecated
String name; // name 의 더이상 사용을 금지시킨다.
int age;
void ovt() {
System.out.println("오버라이딩 테스트");
}
}
메타 에너테이션
에너테이션을 위한 애너테이션으로 애너테이션을 정의할 때 애너테이션의 적용대상이나 유지기간을 지정하는데 사용
메타 애너테이션 | |
---|---|
@Target | 애너테이션이 적용가능한 대상을 지정하는데 사용한다. |
@Documented | 애너테이션 정보가 javadoc으로 작성된 문서에 포함되게 한다. |
@Inherited | 애너테이션이 자손 클래스에 상속되도록 한다. |
@Retention | 애너테이션이 유지되는 범위를 지정하는데 사용한다. |
@Repeatable | 애너테이션을 반복해서 적용할 수 있게 한다.(JDK1.8) |