1. 애너테이션이란?
- 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공
@Test // 이 메서드가 테스트 대상임을 테스트 프로그램에게 알린다.
public void method() {
...
}
2. 표준 애너테이션
- Java에서 제공하는 애너테이션
애너테이션 | 설명 |
@Override | 컴파일러에게 오버라이딩하는 메서드라는 것을 알린다. |
@Deprecated | 앞으로 사용하지 않을 것을 권장하는 대상에 붙인다. |
@SuppressWarnings | 컴파일러의 특정 경고메시지가 나타나지 않게 해준다. |
@SafeVarargs | 지네릭스 타입의 가변인자에 사용한다.(JDK1.7) |
@FunctionalInterface | 함수형 인터페이스라는 것을 알린다(JDK1.8) |
@Native | native메서드에서 참조되는 상수 앞에 붙인다.(JDK1.8) |
@Targer* | 애너테이션이 적용가능한 대상을 지정하는데 사용한다. |
@Documented* | 애너테이션 정보가 javadoc으로 작성된 문서에 포함되게 한다. |
@Inherited* | 애너테이션이 자손 클래스에 상속되도록 한다. |
@Retention* | 애너테이션이 유지되는 범위를 지정하는데 사용한다. |
@Repeatable* | 애너테이션을 반복해서 적용할 수 있게 한다.(JDK1.8) |
3. @Override
- 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다.
- 오버라이딩할 때 메서드이름을 잘못적는 실수를 하는 경우가 많다.
- 오버라이딩할 때는 메서드 선언부 앞에 @Override를 붙이자.
class Parent {
void parentMethod() {}
}
class Child extends Parent {
@Override
void parentmethod() {} // 에러. 조상 메서드의 이름을 잘못 적었음.
}
4. @Deprecated
- 앞으로 사용하지 않을 것을 권장하는 필드나 메서드에 붙인다.
@Deprecated // @Deprecated :사용을 권장하지 않음
public int getDate() {
return normalize().getDayofMonth();
}
5. @FunctionalInterface
- 함수형 인터페이스에 붙이면, 컴파일러가 올바르게 작성했는지 체크
- 함수형 인터페이스에는 하나의 추상메서드만 가져야 한다는 제약이 있음
@FunctionalInterface
public interface Runnable {
public abstract void run(); // 추상 메서드
}
6. @SuppressWarnings
- 컴파일러의 경고메시지가 나타나지 않게 억제한다.
- 괄호()안에 억제하고자하는 경고의 종류를 문자열로 지정
@SuppressWarnings("unchecked") // 지네릭스와 관련된 경고를 억제
ArrayList list = new ArrayList(); //지네릭 타입을 지정하지 않았음.
list.add(obj); // 경고 발생
- 둘 이상의 경고를 동시에 억제가능
@SuppressWarnings({"deprecation", "unchecked", "varargs"})
'Java' 카테고리의 다른 글
125. 애너테이션 타입 정의, 요소 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.06 |
---|---|
124. 메타애너테이션 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.01.06 |
122. 열거형멤버 추가하기 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.03 |
121. 열거형 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.01.03 |
120. 지네릭형변환 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.03 |