주석은 자바 개발자라면 누구나 익숙할 내용인데, 우리는 너무 많은 주석을 사용하는데, 주석이 우리에게 어떻게 작용할까요? 저는 얼마 전의 연구를 통해 주석에 대한 새로운 이해를 갖게 되었습니다.
주석은 주석 인터페이스의 구현입니다. 이는 클래스 및 인터페이스와 동일한 선언 및 사용 수준에 있으며 모두는 . 클래스 속성.
그런데 주석 자체가 정말 효과가 있을까요?
내 말을 믿을 수 없다면 주석을 직접 정의한 다음 코드에 넣어보세요. 결과는 쓸모가 없습니다.
주석을 속성이 있는 표시로 간주할 수 있습니다. 이 표시로 코드를 표시한다는 것은 우리 코드가 주석으로 표시되는 특정 특성을 가지고 있다는 것을 의미하지만, 이를 주석으로 표시한다는 의미는 아닙니다. 순간의 특징.
우리의 코드는 실행 전에 컴파일되어야 합니다. 때때로 우리는 이 클래스를 구문 분석하기 위해 리플렉션이나 동적 프록시 코드를 포함하고 이 클래스와 그에 따른 특성을 제공하는 경우 런타임 중에 동적으로 컴파일해야 합니다. 주석으로 표시되는 의미를 갖습니다.
예를 들어, 우리가 유치원에 다닐 때 화장실에 가려면 손을 들어야 했는데, 이때 선생님이 우리를 그곳으로 인도해 주셨다는 것은 화장실 가기에 대한 주석을 표시했다는 의미입니다. . 선생님이 놔주지 않으면 화장실도 못가고 참기만 하면 됩니다. 이때 선생님이 학급 전체를 훑어보시고 손을 들고 있는 것을 발견하시면 화장실로 가실 것입니다. 모두 손을 들고 있는 급우들과 함께 당신을 화장실로 데려가세요. 그제서야 화장실에 가는 능력이 발달했습니다.
우리가 보는 대부분의 주석은 실제로 처음에 Java에 의해 정의되지 않습니다. 처음에 지정된 주석은 다음과 같은 처음 4개의 메타 주석입니다. 주석은 JavaDoc에 포함됩니다
@Retention – 이 주석을 사용하는 시기
@Target – 주석이 사용되는 위치
@Inherited – 하위 클래스가 이 주석을 상속할 수 있는지 여부
@ 문서화되어 있는 이 주석은 javaDoc을 생성할 때 Java 문서에 이 클래스 또는 메소드에 대한 설명을 넣을지 여부를 의미합니다. 일반적으로 문서 생성을 위해 Java와 함께 제공되는 프로젝트 문서 도구를 사용하지 않으면 쓸모가 없습니다.
RetentionPolicy.SOURCE: 컴파일 단계에서 삭제됩니다. 이러한 주석은 컴파일 후에는 더 이상 의미가 없으므로 바이트코드에 기록되지 않습니다. @Override, @SuppressWarnings는 모두 이러한 유형의 주석에 속합니다.
RetentionPolicy.CLASS : 클래스가 로드되면 삭제됩니다. 바이트코드 파일을 처리하는 데 유용합니다. 주석은 기본적으로 이 방법을 사용합니다
RetentionPolicy.RUNTIME: 주석은 절대 삭제되지 않으며 런타임 중에 주석이 유지되므로 리플렉션 메커니즘을 사용하여 주석 정보를 읽을 수 있습니다. 우리의 사용자 정의 주석은 일반적으로 주석이 표시에 사용되는 위치를 나타내는
@Target 메소드를 사용합니다. 기본값은 모든 요소를 표시하는 것이며 ElementType 값을 여기에 할당할 수 있습니다.
ElementType.CONSTRUCTOR : 생성자를 설명하는 데 사용됩니다.
ElementType.FIELD: 멤버 변수, 개체, 속성(열거형 인스턴스 포함)
ElementType.LOCAL_VARIABLE: 지역 변수를 설명하는 데 사용됩니다.
ElementType.METHOD: 메서드를 설명하는 데 사용됩니다.
ElementType.PACKAGE: 패키지를 설명하는 데 사용
ElementType.PARAMETER: 매개 변수를 설명하는 데 사용
ElementType.TYPE: 클래스, 인터페이스(주석 유형 포함) 또는 열거형 선언을 설명하는 데 사용
@Inherited는 주석과 하위 클래스 간의 관계를 정의하고, @Inherited 메타 주석은 마크 주석이며, @Inherited는 주석이 달린 특정 유형이 상속됨을 설명합니다. @Inherited로 수정된 주석 유형이 클래스에 사용되는 경우 이 주석은 해당 클래스의 하위 클래스에 사용됩니다.
import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * 水果名称注解 */ @Target(FIELD) @Retention(RUNTIME) @Documented public @interface FruitName { String value() default ""; }
위의 메타 주석은 맞춤 주석 서비스를 위한 것입니다.
3. 요약
간단히 말하면 주석은 코드를 표시하는 데 사용되는 표시입니다. Java의 동적 프록시 및 리플렉션을 통해 주석 표시의 내용을 쉽게 얻을 수 있습니다. 다음 기사에서는 사용자 정의 주석을 정의하고 그 구현을 작성하겠습니다.
위 내용은 Java의 주석을 이해하는 데 도움이 되는 기사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!