참치코더의 꿈 메모장

표준 애너테이션(Annotation) - Java - 2021/08/30 본문

JAVA

표준 애너테이션(Annotation) - Java - 2021/08/30

참치깡 2021. 8. 30. 20:29
728x90

애너테이션(annotation)

 

프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 

바로 애너테이션이다.

 

애너테이션은 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서 다른 프로그램에게 유용한

정보를 제공할 수 있다는 장점이 있다.

 

JDK에서 제공하는 표준 에너테이션은 주로 컴파일러를 위한 것으로 컴파일러에게 유용한

정보를 제공한다.

그리고 새로운 애너테이션을 정의할 때 사용하는 메타 에너테이션을 제공한다.

 

표준 애너테이션

 

@Override

 

메서드 앞에만 붙일 수 있는 애너테이션으로 조상의 메서드를 오버라이딩하는 것이라는 

걸 컴파일러에게 알려주는 역할을 한다.

 

메서드 앞에 @Override라고 애너테이션을 붙이면, 컴파일러가 같은 이름의 메서드가

조상에 있는지 확인하고 없으면, 에러메시지를 출력한다.

 

@Deprecated

 

더 이상 사용되지 않는 필드나 메서드에 @Deprecated를 붙인다.

이 애너테이션이 붙은 대상은 다른 것으로 대체되었으니 더 이상 사용하지 않을 것을 

권한다는 의미이다.

 

@FunctionalInterface

 

함수형 인터페이스를 선언할 때 이 애너테이션을 붙이면 컴파일러가 함수형 인터페이스를

올바르게 선언했는지 확인하고, 잘못된 경우 에러를 발생시킨다.

 

@SuppressWarning

 

컴파일러가 보여주는 경고메시지가 나타나지 않게 억제해준다.

묵인해야하는 경고가 발생하는 대상에 반드시 @SuppressWarnings를 붙여서 컴파일 후에 

어떤 경고 메시지도 나타나지 않게 해야한다.

 

* @SuppressWarning에서 주로 사용되는 것 

 

1. deprecation : Deprecation가 붙은 대상을 사용해서 발생 하는 경고 

2. unchecked : 지네릭스로 타입을 지정하지 않았을때 발생 하는 경고

3. rawtypes : 지네릭스를 사용하지 않아서 발생하는 경고

4. varargs : 가변인자의 타입이 지네릭 타입일 때 발생하는 경고를 억제할 때 사용

 

* 둘 이상의 경고를 억제하려면 @SuppresWarning({"deprecation", "unchecked", "varargs"})

 

@SafeVarargs

 

<컴파일 후에 제거되지 않는 타입 : reifiable 타입, 컴파일 후에 제거되는 파일 : non-reifiable 타입>

 

메서드에 선언된 가변인자의 타입이 non-reifiable타입일 경우, 해당 메서드를 선언하는 부분과

호출하는 부분에서 unchecked 경고가 발생한다.

해당 코드에 문제가 없다면 이 경고를 억제하기 위해 @SafeVarargs를 사용해야 한다.

 

이 애너테이션은 생성자와 static이나 final이 붙은 메서드에만 붙일 수 있다.

 

728x90
Comments