Java 주석 이해 – Java @annotations Tutorial

게시 됨: 2019-10-22
패키지 수준 주석

Java에서 주석은 어떻게 그리고 어디에 사용됩니까?

Java 컴퓨터 프로그래밍 언어에서 주석은 Java 소스 코드에 추가할 수 있는 특수한 형태의 구문 메타데이터입니다.

클래스, 메소드, 변수, 매개변수 및 패키지에 주석을 달 수 있습니다. Javadoc 태그와 달리 Java 주석은 컴파일러에 의해 생성된 클래스 파일에 포함될 수 있고 런타임에 검색 가능하도록 Java VM에 의해 유지될 수 있다는 점에서 반사적일 수 있습니다.

Java의 기존 주석에서 메타 주석을 만드는 것이 가능하므로 이 개념을 더욱 정교하게 만듭니다.

Java는 언어에 내장된 주석 세트를 정의합니다.

Java 주석 이해 - Crunchify 팁
Java 주석 이해 – Crunchify 팁

자바 코드에 적용된 주석:

  • @Override – 함수가 재정의인지 확인합니다. 함수가 부모 클래스 중 하나에서 발견되지 않으면 컴파일 경고가 발생합니다.
  • @Deprecated – 함수를 더 이상 사용되지 않는 것으로 표시합니다. 함수가 사용되면 컴파일 경고가 발생합니다.
  • @SuppressWarnings – 주석 매개변수에 지정된 컴파일 시간 경고를 표시하지 않도록 컴파일러에 지시합니다.

다른 주석에 적용된 주석:

  • @Retention – 표시된 주석이 저장되는 방식을 지정합니다. 즉, 코드에만 있는지, 클래스로 컴파일되는지, 또는 리플렉션을 통해 런타임에 사용할 수 있는지 여부를 지정합니다.
  • @Documented – 문서에 포함할 다른 주석을 표시합니다.
  • @Target – 주석을 적용할 수 있는 Java 요소의 종류를 제한하기 위해 다른 주석을 표시합니다.
  • @Inherited – 다른 주석이 주석이 있는 클래스의 하위 클래스에 상속되도록 표시합니다(기본적으로 주석은 하위 클래스에 상속되지 않음).

샘플 예제를 통해 이를 살펴보겠습니다.

1) @Override 주석:

그 존재는 주석이 달린 메서드가 기존 슈퍼클래스 메서드를 재정의해야 함을 컴파일러에 나타냅니다.

@Override 의 가장 일반적인 사용 사례는 Object 메서드를 사용하는 것입니다.

@Override 가 만들어진 주된 이유는 단순한 오타 를 처리하기 위해서였습니다.

예를 들어, 다음과 같이 잘못 선언된 메소드

실제로 재정의가 아닙니다 . 메서드 이름은 모두 소문자 이므로 hashValue() 메서드의 이름과 정확히 일치하지 않습니다. 그러나 완벽하게 잘 컴파일됩니다. 이러한 오류는 만들기 쉽고 포착하기 어려운 위험한 조합입니다. @Override 주석을 사용하면 이러한 오류를 방지할 수 있습니다.

슈퍼클래스 메서드를 재정의할 때마다 @Override 를 사용하는 습관을 가져야 합니다.

Java 주석 이해

2) @Deprecated 주석:

이 주석은 표시된 요소가 더 이상 사용되지 않으며 더 이상 사용되지 않아야 함을 나타냅니다. 컴파일러는 프로그램이 @Deprecated 주석이 있는 메서드, 클래스 또는 필드를 사용할 때마다 경고를 생성합니다.

요소가 더 이상 사용되지 않는 경우 다음 예제와 같이 Javadoc @deprecated 태그를 사용하여 문서화해야 합니다.

3) @SuppressWarnings 주석:

소리 지르지 말고 컴파일러에게 말하십시오. 내가 무엇을 하고 있는지 알아요.

4) @Retention 주석:

보존 주석은 이 유형의 주석을 보존할 위치와 기간을 나타냅니다.

세 가지 값이 있습니다.

  • RetentionPolicy.SOURCE - 이 유형의 주석은 소스 수준에서만 유지되며 컴파일러에서 무시됩니다.
  • RetentionPolicy.CLASS - 이 유형의 주석은 컴파일 시 컴파일러에 의해 유지되지만 VM에서는 무시됩니다.
  • RetentionPolicy.RUNTIME - 이 유형의 주석은 VM에서 유지되므로 런타임 시에만 읽을 수 있습니다.

5) @문서 주석:

이제 Java Doc 명령을 실행하고 출력을 확인하십시오.

6) @Target 주석:

대상은 주석이 달린 주석 유형의 인스턴스를 사용하여 주석을 달 수 있는 프로그램 요소를 나타냅니다. Target의 값은 java.lang.annotation.ElementType 열거형의 멤버 중 하나입니다.

  1. ANNOTATION_TYPE. 주석이 달린 주석 유형은 주석 유형 선언에 주석을 추가하는 데 사용할 수 있습니다.
  2. 건설자. 주석이 달린 주석 유형을 사용하여 생성자 선언에 주석을 추가할 수 있습니다.
  3. 들. 주석이 달린 주석 유형을 사용하여 필드 선언에 주석을 추가할 수 있습니다.
  4. LOCAL_VARIABLE. 주석이 달린 주석 유형을 사용하여 지역 변수 선언에 주석을 달 수 있습니다.
  5. 방법. 어노테이션이 있는 어노테이션 유형은 메소드 선언에 어노테이션을 작성하는 데 사용할 수 있습니다.
  6. 패키지. 주석이 달린 주석 유형을 사용하여 패키지 선언에 주석을 추가할 수 있습니다.
  7. 매개변수. 주석이 달린 주석 유형을 사용하여 매개변수 선언에 주석을 추가할 수 있습니다.
  8. 유형. 주석이 달린 주석 유형은 유형 선언에 주석을 추가하는 데 사용할 수 있습니다.

7) @상속된 주석:

이름에서 알 수 있듯이 @Inherited 주석 유형은 주석 유형의 하위 클래스에 상속됩니다.

이 예제에서 Superclass@ForEveryone@JustForMe 로 명시적으로 주석을 달았습니다. Subclass 는 둘 중 하나로 명시적으로 표시되지 않았습니다. 그러나 후자는 @Inherited 주석이 달려 있기 때문에 @ForEveryone 을 상속합니다.

@JustForMe 는 주석 처리되지 않으므로 Subclass 에 상속되지 않습니다.

다음은 클래스 수준 주석입니다.

클래스 수준 주석