>Java >java지도 시간 >Java 주석의 보존, 문서화 및 상속 소개

Java 주석의 보존, 문서화 및 상속 소개

高洛峰
高洛峰원래의
2017-01-23 15:21:531441검색

보존 주석

보존(보존) 주석은 이 유형의 주석이 해당 단계까지 유지됨을 나타냅니다. 세 가지 값이 있습니다.
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과 비슷한 결과가 표시됩니다.

Java 주석의 보존, 문서화 및 상속 소개

스크린샷에서 볼 수 있듯이 문서에는 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를 참조하세요. 중국사이트!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.