Java 주석은 코드에 대한 정보를 제공하지만 주석에 주석을 달하는 코드 컨텐츠에 직접 영향을 미치지는 않습니다. 이 튜토리얼에서는 Java 주석, 주석을 사용자 정의하는 방법, 주석 사용 및 반사를 통해 주석을 구문 분석하는 방법에 대해 배웁니다.
Java 1.5는 주석을 도입하고 많은 Java 프레임 워크가 현재 최대 절전 모드, 저지 및 봄과 같은 주석을 광범위하게 사용합니다. 프로그램에 프로그램의 메타 데이터로 주석이 포함되어 있습니다. 일부 구문 분석 도구 나 컴파일 도구로 주석을 구문 분석 할 수 있습니다. 또한 주석이 편집 또는 실행 중에 영향을 미친다고 선언 할 수 있습니다.
주석을 사용하기 전에 프로그램 소스 데이터는 Java 주석과 Javadoc을 통과하지만 주석은 이들보다 훨씬 더 많은 것을 제공합니다. 주석에는 메타 데이터뿐만 아니라 프로그램의 실행 순서에도 작용할 수 있습니다. 주석 통역사는 주석을 통해 프로그램의 실행 순서를 해결할 수 있습니다. 예를 들어, Jersey Webservice에서 우리는 메소드에 URI 문자열 형태의 ** Path ** 주석을 추가 한 다음 프로그램이 진행되는 동안 Jerser 통역사는 메소드가 주어진 URI를 호출한다고 결정합니다.
Java 사용자 정의 주석을 만듭니다
사용자 정의 주석을 작성하는 것은 인터페이스를 만드는 것과 유사하지만 주석이 붙은 인터페이스 키워드는 @ 기호로 시작해야합니다. 주석을위한 방법을 선언 할 수 있습니다. 먼저 주석 예를 살펴본 다음 그 특성에 대해 논의하겠습니다.
com.journalDev.annotations 패키지; 가져 오기 java.lang.annotation.documented; import java.lang.annotation.elementtype; import java.lang.annotation.inherited; import java.lang.annotation.retention; import java.lang.annotation.retentation.rang.annotation.targage; @documented@target (elementtype.method)@inherited@retention (rendentpolicy.runtime) public @interface methodInfo {string author () default 'pankaj'; 문자열 날짜 (); int revision () 기본 1; 문자열 댓글 ();} 주석 방법은 매개 변수를 전달할 수 없습니다.
주석 방법의 반환 값 유형은 다음과 같은 것으로 제한됩니다. 기본 유형, 문자열, 열거, 주석 또는 이러한 유형의 배열;
주석 방법은 기본값을 가질 수 있습니다.
주석 자체에는 메타 주석이 포함되어 있으며,이 주석은 다른 주석에 주석을 달 때 사용됩니다.
메타 주석의 네 가지 유형은 다음과 같습니다.
1. @ documented-이 주석이있는 요소는 Javadoc과 같은 도구에 의해 문서화 될 수 있음을 나타냅니다. 이 유형은 주석이 달린 요소 사용에 대한 고객의 선언에 영향을 미치는 유형에 주석을 달아야합니다. 문서화 된 선언에 주석이 달라지면이 유형의 주석이 달린 주석은 주석이 달린 프로그램 멤버의 공개 API로 사용됩니다.
2. @Target- 이 유형의 주석이 주석을 달 수있는 프로그램 요소의 범위를 나타냅니다. 이 메타 주석의 값은 타입, 메소드, 생성자, 필드 등이 될 수 있습니다. 대상 메타 주석이 나타나지 않으면 정의 된 주석이 프로그램의 임의의 요소에 적용될 수 있습니다.
3. @Inherited- 주석 유형이 자동으로 상속되었음을 나타냅니다. 사용자가 현재 클래스 에서이 메타 주석 유형을 쿼리하고 현재 클래스의 선언 에이 메타 주석 유형이 포함되지 않으면 현재 클래스의 상위 클래스에 상속 된 메타 주석이 있는지 여부를 자동으로 쿼리합니다. 이 조치는 주석 유형이 발견되거나 최상위 수준의 상위 클래스가 쿼리되었음을 알기 위해 반복됩니다.
4.@Retention- 주석이 유지되는 시간을 지정합니다. resentpolicy 값은 소스, 클래스, 런타임입니다.
자바 내장 주석
Java는 세 가지 내장 주석을 제공합니다.
1. @override- 부모 클래스에서 메소드를 다시 작성하려면이 주석을 사용하여 컴파일러 에게이 메소드를 다시 작성하려는 것을 알리야합니다. 이렇게하면 부모 클래스의 메소드가 제거되거나 변경되면 컴파일러가 오류 메시지를 자극합니다.
2. @Deprecated- 컴파일러가 메소드를 권장하지 않는다는 것을 알기를 원할 때이 주석을 사용해야합니다. Java는 Javadoc 에서이 주석을 권장합니다.이 방법이 권장되지 않는 이유와 대체 방법을 제공해야합니다.
3. @SuppressWarnings- 이것은 컴파일러에게 제네릭에서 기본 데이터 유형을 사용하는 것과 같은 특정 경고 메시지를 무시하도록 지시하는 것입니다. 유지 정책은 소스 (번역기 주 : 소스 파일에서 유효 함)이며 컴파일러에 의해 폐기됩니다.
Java의 내장 주석의 예를 살펴 보겠습니다. 위에서 언급 한 사용자 정의 주석을 참조하십시오.
com.journalDev.annotations 패키지; import java.io.filenotfoundException; import java.util.arraylist; import java.util.list; public class annotationApample {public static void main (string [] args) {} @atrever @methodInfo (author = 'pankaj', comment = 'main method', date = 'Nov 17 2012', Revision = 1) public string toString () {return 'retafiden tostring method'; void oldmethod () {system.out.println ( '오래된 메소드, 사용하지 마십시오. ArrayList (); l.add ( 'abc'); OldMethod ();}}이 예는 자기 설명이 가능하며 다른 시나리오로 표시 될 수 있다고 생각합니다.
Java 주석 분석
우리는 반사 기술을 사용하여 Java 클래스의 주석을 구문 분석 할 것입니다. 그렇다면 주석 exentionpolicy는 런타임으로 설정해야합니다. 그렇지 않으면 실행 중에 Java 클래스의 주석 정보를 사용할 수 없으므로 주석과 관련된 데이터를 얻을 수 없습니다.
com.journalDev.annotations 패키지; import java.lang.annotation.annotation; import java.lang.reflect.method; public class AnnotationParsing {public static void main (string [] args) {try {for (메소드 메소드 : AnnotationParsing.class.getClassLoader () .loadClass (( 'com.journalDev.annotations.annotationexample')). (method.isannotationPresent (com.journaldev.annotations.methodinfo.class)) {try {// (Annotation anno : method.getDeclaredAnnotations ()) {System.out.println ( 'method.out' ' + method +' '; } methodInfo methodAnno = method.getAnnotation (methodInfo.class); if (methodanno.revision () == 1) {System.out.println ( '개정 번호 1 ='+ 메소드가있는 메소드); }} catch (Throwable ex) {ex.printstacktrace (); }}}} catch (securityException | classNotFoundException e) {e.printstacktrace (); }}} 위 프로그램을 실행하면 다음이 출력됩니다.
메소드의 주석 'public java.lang.string com.journaldev.annotations.annotationexample.tostring ()': @com.journaldev.annotations.methodinfo (author = pankaj, 개정 = 1, 댓글 = 주요 방법, 날짜 = 11 월 2012 년) 개정 번호 1 = public java.lang.string. com.journaldev.annotations.annotationexample.toString () 메서드의 주석 'public static void com.journalDev.annotations.annotationExample.oldMethod ()': @java.lang.deprecated () methome 'public static void com.journalDev.annotations.annotexample.annotexamport.annotation. @com.journaldev.annotations.methodinfo (author = pankaj, revision = 1, comment = novers = nov 17 2012) 개정 번호 1 = public static void com.journalDev.annotations.AnnotationExample.oldMethod.LODERCALTETATIONT (journal void)의 주석 (). java.io.filenotfoundexception ': @com.journaldev.annotations.methodinfo (author = pankaj, chenment = 10, 댓글 = 주 방법, 날짜 = 11 월 17 일)
그것은이 튜토리얼에 관한 것이며, 그로부터 무언가를 배울 수 있기를 바랍니다.