자바 @주석

2125 단어 java
Java를 약 일주일 동안(아마도 더 적을 수도 있음) 사용했다면 이미 몇 가지 주석을 보았을 가능성이 있습니다. 그들에 대한 몇 가지 사항을 검토해 봅시다.

https://docs.oracle.com/javase/tutorial/java/annotations/에 설명된 대로 주석을 사용하여 다음을 수행할 수 있습니다.

  • 컴파일러에 정보 제공: 오류를 감지하거나 경고를 억제할 수 있도록 합니다.

  • 컴파일 시간 및 배포 시간 처리: 코드, xml 파일 등을 생성할 수 있습니다.

  • 런타임 처리: 일부 주석은 런타임 시 검토할 수 있습니다(리플렉션 사용).

  • 유형을 사용하는 모든 곳에서 주석을 사용할 수 있습니다.

    한 가지 흥미로운 사실은 주석이 잠재적으로 코드를 생성할 수 있지만 수정할 수는 없다는 것입니다. lombok과 같은 도구를 사용하는 경우 실제로 코드를 수정하지만 일반적으로 내부 라이브러리에 액세스하여 이를 수행합니다.

    주석은 다음과 같이 @interface 키워드로 정의됩니다.

    public @interface Version {
      int mayor();
      int minor();
    }
    


    이들은 이전에 언급한 기본 유형, 열거형, 기타 주석 및 배열을 수신할 수 있습니다. 열거형을 정의해 봅시다:

    public enum Usage {
      UTILITY,
      DTO,
      DAO,
      SERVICE
    }
    


    그런 다음 다른 주석을 만들어 보겠습니다.

    public @interface Info {
      String[] authors();
      Usage usage();
      Version version();
    }
    


    이제 우리는 그것을 사용합니다:

    @Info(
        authors = {"jsedano", "weirderror"},
        usage = Usage.UTILITY,
        version = @Version(mayor = 1, minor = 0))
    public class VeryUtil {}
    


    런타임 시 가상 머신에서 주석을 유지해야 하는지 여부를 지정할 수 있습니다. 또는 컴파일러에 의해 폐기되는 경우에도 마찬가지입니다. 이는 meta-annotation를 사용하여 달성되며, 메타 주석은 다른 주석에 적용되는 주석입니다.

    예를 들어 메서드, 생성자 등에서 주석을 사용할 수 있는 위치를 정의할 수도 있습니다.

    @Override 주석이 어떻게 정의되는지 살펴보겠습니다(@Override는 메서드 재정의를 사용하는 메서드를 표시하는 데 사용되는 미리 정의된 주석입니다).

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.SOURCE)
    public @interface Override {
    }
    


    보시다시피 메타 주석 @Target은 이 특정 주석이 메소드 선언 위에서만 사용될 수 있다고 말하는 데 사용되며 @Retention 주석은 이 주석이 클래스 파일에 기록되지 않으며 다음 위치에서 사용할 수 없음을 나타냅니다. 실행 시간.

    주석 유형에 대한 기능을 실제로 정의하려면 .

    좋은 웹페이지 즐겨찾기