annotaion

roghabo·2021년 7월 20일
0

java의 정석

목록 보기
36/36

1. annotaion이란


  • 주석, 주해, 메모

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

  • 프로그래밍 언에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있음

  • annotation의 종류

    • 표준 annotation
    • 메타 annotation

2. 표준 annotation


1) @Override

  • 메서드 앞에만 붙일 수 있는 애너테이션
  • 조상의 메서드를 오버라이딩하는 것이라는걸 컴파일러에게 알려주는 역할
  • 컴파일러가 같은 이름의 메서드가 조상에 있는지 확인하고 없으면, 에러메시지를 출력

2) @Deprecated

  • 더 이상 사용되지 않는 필드나 메서드에 붙이는 애너테이션
  • @Deprecated이 붙은 대상은 다른 것으로 대체되었으니 더 이상 사용하지 않을 것을 권한다는 의미 (강제성은 없음)

3) @Functionallnterface

  • 함수형 인터페이스를 선언할 때, @Functionallnterface 애너테이션을 붙이면 컴파일러가 올바르게 선언했는지 확인하고, 잘못된 경우 에러를 발생시킴

4) @SuppressWarnings

  • 컴파일러가 보여주는 경고메시지가 나타나지 않게 억제해줌
  • 억제할 수 있는 경고 메시지의 종류
    • deprecation: @Deprecated가 붙은 대상을 사용해서 발생하는 경고를 억제
    • unchecked: 지네릭스 타입을 지정하지 않았을 때 발생하는 경고를 억제
    • rawtypes: 지네릭스를 사용하지 않아서 발생하는 경고를 억제
    • varargs: 가변인자의 타입이 지네릭 타입일 때 발생하는 경고를 억제
  • 둘 이상을 억제하는 방법
    @SuppressWarmomgs({"deprecation", "unchecked"})

5) @SafeVarargs

  • 메서드에 선언된 가변인자의 타입이 non-reifiable타입일 경우
  • static이나 final이 붙은 메서드와 생성자에만 붙일 수 있음(오바라이드 될 수 없는 메서드에서만 사용 가능)
  • 해당 메서드의 가변인자는 타입 안정성이 있음을 알림
  • @SafeVarags를 붙이면, 이 메서드를 호출하는 곳에서 발생하는 경고도 억제 됨(@SupressWarning("unchecked")로 억제하려면, 메서드 선언뿐만 아니라 호출되는 곳에도 에너테이션을 부여햐 함)

  • @SafeVarags로 'unchecked'경고는 억제할 수 있지만, 'varags'경고는 억제할 수 없음

    *reifiable: 컴파일 후에도 제거되지 않는 타입
    non-reifiable: 컴파일 후에 제거되는 타입 ex) 지네릭 타입


java의 정석 chapter12

profile
Full Stack Developer 📚

0개의 댓글