보존 주석
보존(보존) 주석은 이 유형의 주석이 해당 단계까지 유지됨을 나타냅니다. 세 가지 값이 있습니다.
1.RetentionPolicy.SOURCE - 이 유형의 주석은 다음 위치에서만 유지됩니다. 소스 코드 수준에서는 컴파일 타임에 무시됩니다.
2.RetentionPolicy.CLASS - 이 유형의 주석은 컴파일 타임에 유지되고 클래스 파일에 존재하지만 JVM은
3.RetentionPolicy를 무시합니다. - 이 유형의 주석은 JVM에 의해 유지되므로 런타임 시 리플렉션 메커니즘을 사용하여 JVM 또는 기타 코드에서 읽고 사용할 수 있습니다.
예 5에서는 RetentionPolicy.RUNTIME 선언을 보여줍니다.
Java 주석의 예 1:
@Retention(RetentionPolicy.RUNTIME) public @interface Test_Retention { String doTestRetention(); }
이 예에서 @Retention(RetentionPolicy.RUNTIME) 주석은 Test_Retention 주석이 런타임 시 리플렉션을 통해 읽을 수 있도록 가상 머신에 의해 유지됨을 나타냅니다.
문서화된 주석
문서화된 주석은 이 주석이 javadoc 도구에 의해 기록되어야 함을 나타냅니다. 기본적으로 javadoc에는 주석이 포함되어 있지 않습니다. javadoc 및 기타 도구이므로 주석 유형 정보도 생성된 문서에 포함됩니다. 예제 6에서는 @Documented의 사용을 추가로 보여줍니다.
Java 주석 예제 2:
@Documented public @interface Test_Documented { String doTestDocument(); }
TestAnnotations 클래스를 다음과 같이 수정하세요.
public class TestAnnotations { public static void main(String arg[]) { new TestAnnotations().doSomeTestRetention(); new TestAnnotations().doSomeTestDocumented(); } @Test_Retention (doTestRetention="保留注解信息测试") public void doSomeTestRetention() { System.out.printf("测试注解类型 'Retention'"); } @Test_Documented(doTestDocument="Hello document") public void doSomeTestDocumented() { System.out.printf("测试注解类型 'Documented'"); } }
이제 javadoc 명령을 사용하여 TestAnnotations.html 파일을 생성하면 그림 1과 비슷한 결과가 표시됩니다.
스크린샷에서 볼 수 있듯이 문서에는 doSomeTestRetention() 메소드에 대한 주석 유형 정보() 메소드가 없습니다. 그러나 doSomeTestDocumented() 메소드에 대한 설명 정보를 제공합니다. @Documented 태그가 추가되었기 때문입니다. Test_Documented 주석으로 오세요. 이전 주석인 Test_Retention에서는 @Documented 태그를 지정하지 않았습니다(이 문단에 문제가 있을 수 있습니다...).
이것은 약간 복잡한 주석 유형입니다. 더 구체적으로 주석을 정의할 때 @Inherited 태그를 사용하고 정의된 주석을 사용하여 다른 상위 클래스에 주석을 답니다. 클래스가 있고 상위 클래스에 하위 클래스가 있으면 상위 클래스의 모든 속성이 해당 하위 클래스에 상속됩니다. 예제 7에서는 @Inherited 태그를 사용하면 얻을 수 있는 이점을 확인할 수 있습니다.
예제 3 Java 주석
먼저 주석을 정의합니다:
@Inherited public @interface MyParentObject { boolean isInherited() default true; String doSomething() default "Do what?"; }
다음으로 클래스에 주석을 추가합니다:
@MyParentObject public Class MyChildObject { }
보시다시피 @Inherited 태그를 사용하기 때문에 고대 방식으로 구현 클래스를 정의하면 어떤 모습일까요?
public class MyChildObject implements MyParentObject { public boolean isInherited() { return false; } public String doSomething() { return ""; } public boolean equals(Object obj) { return false; } public int hashCode() { return 0; } public String toString() { return ""; } public Class annotationType() { return null; } }
차이점이 보이나요? 보시다시피 myParentObject의 isInherited() 및 doSomething() 메서드 외에도 equals(), toString도 구현해야 합니다. () 및 java.lang.Object의 hasCode() 메소드 java.lang.annotation.Annotation 클래스의 annotationType() 메소드도 있습니다. 이러한 메소드를 구현하려는지 여부에 관계없이 이를 상속된 클래스에 포함해야 합니다. object.
결론
이 기사에서는 JDK5의 주석 기능을 사용하여 개발을 더 쉽게 만드는 방법을 보여줍니다. 주석은 프로그램의 의미에 직접적인 영향을 미치지 않으며 개발 및 배포 도구는 이를 읽을 수 있습니다. 주석을 사용하여 주석을 포함하는 프로그램을 사용하면 추가 Java 소스 파일, XML 문서 또는 기타 고대 유물을 대체할 수 있으며 더 적은 코드로 동일한 작업을 수행할 수 있으며 컴파일 시간 오류 감지 기능이 향상됩니다. 주석의 목적은 엄격하고 쓸모없는 세부 사항에 시간을 덜 쓰고 비즈니스 논리 규칙에 더 집중하는 것입니다. 이 기사는 Java 주석 시리즈의 첫 번째 부분이며 두 번째 부분에서는 주석을 사용하여 개발하는 방법을 배웁니다. 마지막으로 세 번째 부분에서는 여러 데이터베이스 테이블을 포함하는 복잡한 예를 살펴보겠습니다.
보존, 문서화 및 상속 관련 기사에 대한 자세한 Java 주석 소개를 보려면 PHP를 참조하세요. 중국사이트!