Java의 메모 상세 정보 및 예제 코드

7961 단어 Java주해
Java에서 주석(Annotation) 도입은 Java5에서 시작하여 Java 코드의 메타정보를 설명하는데 사용되며, 일반적인 상황에서 주석은 코드의 집행에 직접적인 영향을 주지 않는다. 비록 일부 주석은 코드의 집행에 영향을 줄 수 있지만.
무엇을 할 수 있는지 주해하다
Java의 메모는 일반적으로 다음과 같은 역할을 합니다.
  • 컴파일러 명령어
  • 구축 시 명령
  • 런타임 명령
  • 그 가운데
  • 자바에는 세 가지 컴파일러 명령이 내장되어 있는데 본고의 뒷부분은 중점적으로 소개할 것이다
  • 자바 주석은 구축할 때, 즉 프로젝트를 구축할 때 사용할 수 있다.구축 과정은 원본 생성, 원본 인코딩, xml 파일 생성, 인코딩된 원본 인코딩과 파일을 JAR 패키지로 포장하는 것을 포함한다.소프트웨어 구축은 일반적으로 Apache Ant와 Maven 같은 도구를 사용하여 자동으로 이루어집니다.이러한 빌드 도구는 특정 메모에 따라 Java 코드를 스캔한 다음 해당 메모에 따라 원본 코드나 파일을 생성합니다.
  • 통상적으로 주해는 컴파일된 코드에 나타나지 않지만 나타나려면 가능하다.Java는 실행할 때의 주석을 지원합니다. Java의 반사를 사용하면 이 주석에 접근할 수 있습니다. 실행할 때의 주석의 목적은 보통 프로그램과 제3자 API에 명령을 제공하는 것입니다.
  • 주해 기초
    간단한 Java 메모는 @Entity와 유사합니다.그중@의 뜻은 컴파일러에게 이것이 주석이라는 것을 알려주는 것이다.Entity는 메모의 이름입니다.보통 파일에서 다음과 같이 쓴다
    public @interface Entity {
    }
    주석 요소
    Java 메모는 요소를 사용하여 속성이나 매개변수와 유사한 값을 설정할 수 있습니다.요소가 포함된 메모 예제 코드 정의
    public @interface Entity {
      String tableName();
    }
    요소가 포함된 메모 예제 코드 사용
    @Entity(tableName = "vehicles")
    상기 주석의 요소 이름은tableName이고 설정된 값은vehicles입니다.요소가 없는 메모는 괄호를 사용할 필요가 없습니다.
    메모에 여러 요소가 포함된 경우 다음 방법을 사용합니다.
    @Entity(tableName = "vehicles", primaryKey = "id")
    만약 주해가 단지 하나의 원소만 있다면, 통상적으로 우리의 작법은 이렇다
    @InsertNew(value = "yes")
    그러나 이런 상황에서 원소의 이름이value일 때만 우리는 간단명료하게 쓸 수 있다. 즉, 원소의 이름value를 기입할 필요가 없다. 효과는 다음과 같다.
    @InsertNew("yes")
    메모 사용
    주해는 코드의 이 요소들을 수식할 수 있다
  • 클래스
  • 커넥터
  • 메서드
  • 메소드 매개변수
  • 속성
  • 부분 변수
  • 하나의 완전한 사용 예는 다음과 같다.
    
    @Entity
    public class Vehicle {
    
      @Persistent
      protected String vehicleName = null;
    
    
      @Getter
      public String getVehicleName() {
        return this.vehicleName;
      }
    
      public void setVehicleName(@Optional vehicleName) {
        this.vehicleName = vehicleName;
      }
    
      public List addVehicleNameToList(List names) {
    
        @Optional
        List localNames = names;
    
        if(localNames == null) {
          localNames = new ArrayList();
        }
        localNames.add(getVehicleName());
    
        return localNames;
      }
    
    }
    
    
    내장형 Java 메모
    Java에는 컴파일러에 명령을 제공하는 데 사용되는 세 가지 내장 메모가 있습니다.그것들은
  • @Deprecated
  • @Override
  • @SuppressWarnings
  • @Deprecated
    클래스, 방법, 속성을 표시할 수 있습니다.
    위의 세 요소가 더 이상 사용되지 않으면 @Deprecated 메모를 사용합니다.
    코드가 @Deprecated 메모의 클래스, 메서드 또는 속성을 사용하는 경우 컴파일러가 경고합니다.
    @Deprecated 사용은 간단합니다. 다음은 버려진 클래스를 설명하는 것입니다.
    
    @Deprecated
    public class MyComponent {
    
    }
    
    
    
    @Deprecated 메모를 사용한 후에 대응하는 @deprecated JavaDoc 기호를 함께 사용하고 왜 이런 종류, 방법이나 속성이 사용되지 않고 대체 방안이 무엇인지 설명하는 것을 권장합니다.
    
    @Deprecated
    /**
     @deprecated This class is full of bugs. Use MyNewComponent instead.
    */
    public class MyComponent {
    
    }
    
    
    @Override
    @Override 메모는 상위 클래스를 다시 쓰는 방법을 수정하는 데 사용됩니다.만약 부류를 다시 쓰지 않는 방법이 이 주석을 사용한다면, 컴파일러는 오류를 알릴 것입니다.
    실제로 하위 클래스에서 부모 클래스나 인터페이스를 다시 쓰는 방법은 @Overide가 필요하지 않습니다.그러나 이 주석을 사용하는 것을 권장합니다. 어떤 경우 부류의 방법의 이름을 수정했다고 가정하면 이전에 다시 쓴 부류는 다시 쓰는 것이 아닙니다. @Overide가 없으면 이 부류의 방법을 눈치채지 못할 것입니다.이 주석 수식이 있으면, 컴파일러는 너에게 이 정보를 알려줄 것이다.
    Override 메모를 사용한 예
    
    public class MySuperClass {
    
      public void doTheThing() {
        System.out.println("Do the thing");
      }
    }
    
    
    public class MySubClass extends MySuperClass{
    
      @Override
      public void doTheThing() {
        System.out.println("Do it differently");
      }
    }
    
    
    @SuppressWarnings
    @SuppressWarnings는 컴파일러가 경고 메시지를 생성하는 것을 억제하는 데 사용됩니다.
    수식 가능한 요소는 클래스, 방법, 방법 매개 변수, 속성, 국부 변수
    사용 장면: 우리가 사용하는 방법을 사용하지 않거나 안전하지 않은 유형 변환을 하면 컴파일러가 경고를 생성합니다.우리는 이 방법을 위해 늘릴 수 있다
    @SuppressWarnings 메모를 사용하여 컴파일러의 경고 생성을 억제합니다.
    주의: @SuppressWarnings 주석을 사용하고 가까운 원칙을 사용합니다. 예를 들어 한 가지 방법으로 경고가 나타나면 우리는 가능한 한 @SuppressWarnings 주석을 사용합니다. 주석 방법이 있는 종류가 아니라 @SuppressWarnings 주석을 사용합니다.두 개 모두 컴파일러의 경고 생성을 억제할 수 있지만 범위가 작을수록 좋다. 범위가 넓어서 우리가 이 종류의 다른 방법의 경고 정보를 발견하는 데 불리하기 때문이다.
    사용 예
    
    @SuppressWarnings
    public void methodWithWarning() {
    
    }
    
    
    자신만의 메모 만들기
    Java에서 우리는 자신의 주석, 주석, 클래스, 인터페이스 파일처럼 자신의 파일에 정의할 수 있다.아래와 같다
    
    @interface MyAnnotation {
      String  value();
      String  name();
      int   age();
      String[] newNames();
    }
    
    위의 코드는 4개의 요소가 있는 MyAnnotation이라는 메모를 정의합니다.다시 한 번 강조하지만, @interface라는 키워드는 자바 컴파일러에게 이것이 주석이라는 것을 알려 줍니다.
    자세히 보면, 주해 원소의 정의는 인터페이스와 매우 유사하다는 것을 발견할 수 있다.이러한 요소에는 유형과 이름이 있습니다.이러한 유형은
  • 원시 데이터 유형
  • String
  • Class
  • annotation
  • 매거
  • 1차원 그룹
  • 사용자 정의 메모를 적용하려면 다음과 같이 하십시오.
    
    @MyAnnotation(
      value="123",
      name="Jakob",
      age=37,
      newNames={"Jenkov", "Peterson"}
    )
    public class MyClass {
    
    
    }
    
    
    주의, 우리는 모든 주석 요소에 값을 설정해야 한다. 하나도 빠질 수 없다.
    메모 요소 기본값
    메모의 요소에 대해 기본값을 설정할 수 있습니다.
    
    @interface MyAnnotation {
      String  value() default "";
      String  name();
      int   age();
      String[] newNames();
    }
    
    상기 코드는value 요소의 기본값을 빈 문자열로 설정했습니다.우리가 사용할 때,value의 값을 설정하지 않고,value가 빈 문자열 기본값을 사용하도록 할 수 있습니다.예제 코드 사용
    
    @MyAnnotation(
      name="Jakob",
      age=37,
      newNames={"Jenkov", "Peterson"}
    )
    public class MyClass {
    
    }
    
    
    @Retention
    @Retention 은 메모를 수정하는 데 사용되는 메모입니다. 이 메모를 사용하면 할 수 있습니다.
    콜아웃이class 파일에 기록되는지 여부를 조정합니다
    class 파일에서 주석을 실행할 때 볼 수 있는지 여부를 제어합니다
    제어는 매우 간단하다. 아래의 세 가지 전략 중 하나를 사용하면 된다.
    RetentionPolicy.SOURCE 는 메모가 소스 코드에만 있고 존재하지 않음을 나타냅니다.class 파일, 더 실행할 수 없을 때 볼 수 있습니다.일반적인 메모는 @Override, @SuppressWarnings입니다.
    RetentionPolicy.CLASS 기본 메모 보존 정책입니다.이런 전략 아래 주해가 존재할 것이다.class 파일입니다. 실행할 때 접근할 수 없습니다.일반적으로 이런 주석 정책은 일부 바이트 코드의 작업에 사용된다.
    RetentionPolicy.RUNTIME 은 런타임 시 액세스할 수 있는 정책입니다.통상적으로 우리는 반사와 결합하여 일을 한다.
    @Retention 의 사용 예
    
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    
    @Retention(RetentionPolicy.RUNTIME)
    @interface MyAnnotation {
      String  value() default "";
    }
    
    
    @Target
    @Target 주석을 사용하면 사용자 정의 주석이 어떤 자바 요소를 수식할 수 있는지 설정할 수 있습니다.간단한 예
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Target;
    
    @Target({ElementType.METHOD})
    public @interface MyAnnotation {
      String  value();
    }
    
    
    위의 코드는 MyAnnotation 메모가 메서드만 수정할 수 있음을 나타냅니다.
    @Target에서 선택할 수 있는 매개변수 값은 다음과 같습니다.
  • ElementType.ANNOTATION_TYPE(주: 코스메틱 메모)
  • ElementType.CONSTRUCTOR
  • ElementType.FIELD
  • ElementType.LOCAL_VARIABLE
  • ElementType.METHOD
  • ElementType.PACKAGE
  • ElementType.PARAMETER
  • ElementType.TYPE(주: 모든 유형, 즉 위의 유형은 손질 가능)
  • @Inherited
    클래스와 하위 클래스에 주석을 포함하려면 @Inherited를 사용하여 주석을 수식할 수 있습니다.
    
    java.lang.annotation.Inherited
    
    @Inherited
    public @interface MyAnnotation {
    
    }
    1
    2
    @MyAnnotation
    public class MySuperClass { ... }
    1
    public class MySubClass extends MySuperClass { ... }
    
    
    상술한 코드의 대체적인 뜻은
    1. @Inherited 코스메틱 메모를 사용하여 MyAnnotation
    2. MyAnnotation 메모를 사용하여 MySuperClass
    3. 하나의 클래스 MySubclass를 실현하여 MySuperClass로부터 상속
    위의 몇 단계를 통해 MySubClass도 MyAnnotation 메모를 가지고 있습니다.
    Java의 주석에 관한 몇 가지 기본적인 개념은 바로 이것이다.
    이상은 자바에 대한 주해 자료 정리입니다. 다음에 관련 자료를 계속 보충해 드리겠습니다. 본 사이트에 대한 지지에 감사드립니다!

    좋은 웹페이지 즐겨찾기