본문 바로가기
JAVA BASE/GenericsEnumsAnnotation

06. [자바] 애너테이션(Annotation)

by staticClass 2021. 1. 11.

애너테이션?

애너테이션의 사전적 의미로는 주석, 주해, 메모이다

애너테이션은 추석 처럼 프로그래밍 언어에 영향을 미치지 않지만

다른 프로그램에게 유용한 정보를 제공하는 용도이다.

크게 두가지로 나눌수 있는데 표준 애너테이션과 메타 애너테이션이 있다.

표준 애너테이션

자바에서 기본적으로 제공하는 애너테이션이다.

애너테이션 설명
@Overrde 컴파일러에게 오버라이딩하는 메서드라는 것을 알린다.
@Deprecated 앞으로 사용하지 않을 것을 권장하는 알림이 생긴다.
@SuppressWarnings 컴파일러의 특정 경고메시지가 나타나지 않게 해준다.
@SafeVarargs 제네릭스 타입의 가변인자에 사용한다.
@FunctionalInterface 함수형 인터페이스라는 것을 알린다.
@Native native메서드에서 참조되는 상수 앞에 붙인다.

 

@Overrde

메서드 앞에만 붙일 수 있다

조상의 메서드를 오버라이딩 한다는 것을 컴파일러에게 알려준다.

class Parent {
    void parentMathod() { } // 대문자 M
}

class Child extends Parent {
    void parentmathod() { } // 소문자 m, 오버라이딩 하려고 했지만 실수로 이름을 잘못적음
}

위의 코드 같은경우 컴파일러는 새로운 이름의 메서드가 추가된 것으로 인식하고

아무런 문제 없이 컴파일이 완료기 때문에 개발자 입장에서는 잘못 된지 모르고 넘어가는 일이 많다

class Parent {
    void parentMathod() { } // 대문자 M
}

class Child extends Parent {
    @Override
    void parentmathod() { } // 소문자 m, 오버라이딩 하려고 했지만 실수로 이름을 잘못적음
}

하지만 위 코드와 같이 @Override를 추가해준다면
에러가 발생하기 때문에 컴파일을 할 수 없게 된다.

오버라이딩 시 @Override는 알아내기 어려운 실수를 방지해 주기 때문에 붙이는게 좋겠다.😁

 

@Deprecated
새로운 버전의 JDK가 나올때 쓸모 없어진 기능들이 있다고 해서 기존의 것들을 함부로 삭제할 수없다
아직 여러 곳에서 사용되고 있을 수 있기 때문인데 지울수는 없으니 적어도 더이상 사용은 하지 말라는
표시로 @Deprecated를 붙이는 것이다.

위와 같이 @Deprecated를 붙이게 되면 

취소선

이 생기게 된다.

 

@FunctionalInterface
함수형 인터페이스를 선언할 때 애너테이션을 붙이면 올바르게 선언했는지 확인하고
잘못된 경우 에러를 발생시켜준다. 실수를 방지할 수 있으므로 함수형 인터페이스를 선언할 때는
붙여주는게 좋겠다😉

@FunctionalInterface
public interface Eatable {
    public abstract void eat(); // 추상 메서드
}

 

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

위의 경고는 Map에 제네릭스에 타입 매개변수를 지정해주지 않아 생기는 경고다
경우에 따라 경고가 발생해도 묵인해야 할 때가 있는데 이럴때 사용 된다.
@SuppressWarnings는 위와 같은 경고들을 보이지 않게 해준다.

@SuppressWarnings로 경고를 억제 시켰다

 

만약 두가지 경고를 억제 시키고 싶다면 배열 형태로 사용해야 한다.

변수 map에 남아있던 unused 경고가 없어졌다.

이 처럼 @SuppressWarnings로 억제할 수 있는 경고 메시지의 종류는 여러가지가 있지만

몇가지만 알고 넘어가자.

종류 설명
all  모든 경고를 억제
deprecation 사용하지 말아야 할 메소드 관련 경고 억제
unchecked 검증되지 않은 연산자 관련 경고 억제
rawtypes 제네릭을 사용하는 클래스의 타입 매개 변수가 불특정일 때의 경고 억제

 

댓글