산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 주석 유형

자바 주석 유형

이 튜토리얼에서는 예제를 통해 다양한 유형의 Java 주석에 대해 알아봅니다.

Java 주석은 프로그램 소스 코드에 대한 메타데이터(데이터에 대한 데이터)입니다. Java SE에서 제공하는 몇 가지 미리 정의된 주석이 있습니다. 또한 필요에 따라 사용자 지정 주석을 만들 수도 있습니다.

주석이 무엇인지 모르는 경우 Java 주석 튜토리얼을 방문하십시오.

이러한 주석은 다음과 같이 분류할 수 있습니다.

1. 사전 정의된 주석

2. 맞춤 특수효과

3. 메타 주석

<시간>

사전 정의된 주석 유형

1. @지원 중단됨

@Deprecated 주석은 요소(클래스, 메소드, 필드 등)가 더 이상 사용되지 않으며 새로운 요소로 대체되었음을 나타내는 마커 주석입니다.

구문은 다음과 같습니다.

@Deprecated
accessModifier returnType deprecatedMethodName() { ... }

프로그램이 더 이상 사용되지 않는다고 선언된 요소를 사용하면 컴파일러에서 경고를 생성합니다.

Javadoc @deprecated을 사용합니다. 사용되지 않는 요소를 문서화하기 위한 태그입니다.

/**
 * @deprecated
 * why it was deprecated
 */
@Deprecated
accessModifier returnType deprecatedMethodName() { ... }

예시 1:@Deprecated 주석 예시

class Main {
  /**
   * @deprecated
   * This method is deprecated and has been replaced by newMethod()
   */
  @Deprecated
  public static void deprecatedMethod() { 
    System.out.println("Deprecated method"); 
  } 

  public static void main(String args[]) {
    deprecatedMethod();
  }
}

출력

Deprecated method
<시간>

2. @재정의

@Override 어노테이션은 서브클래스의 메소드가 동일한 메소드 이름, 리턴 유형 및 매개변수 목록을 갖는 수퍼클래스의 메소드를 재정의하도록 지정합니다.

@Override를 반드시 사용해야 하는 것은 아닙니다. 메서드를 재정의할 때. 그러나 그것을 사용하면 메서드를 재정의하는 동안 잘못된 매개 변수 유형과 같은 문제가 있는 경우 컴파일러에서 오류가 발생합니다.

예시 2:@Override 주석 예

class Animal {

  // overridden method
  public void display(){
    System.out.println("I am an animal");
  }
}

class Dog extends Animal {

  // overriding method
  @Override
  public void display(){
    System.out.println("I am a dog");
  }

  public void printMessage(){
    display();
  }
}

class Main {
  public static void main(String[] args) {
    Dog dog1 = new Dog();
    dog1.printMessage();
  }
}

출력

I am a dog

이 예에서는 개체를 dog1 의 클래스에서 printMessage() 메서드를 호출할 수 있습니다. 그런 다음 display()를 실행합니다. 성명서.

display() 이후 두 클래스 모두에서 정의되며 하위 클래스 Dog의 메서드입니다. 슈퍼클래스 Animal의 메서드를 재정의합니다. . 따라서 display() 하위 클래스가 호출됩니다.

<시간>

3. @SuppressWarnings

이름에서 알 수 있듯이 @SuppressWarnings 주석은 프로그램이 실행되는 동안 생성되는 경고를 억제하도록 컴파일러에 지시합니다.

억제할 경고 유형을 지정할 수 있습니다. 억제할 수 있는 경고는 컴파일러에 따라 다르지만 두 가지 범주의 경고가 있습니다. 지원 중단선택 해제 .

특정 범주의 경고를 표시하지 않으려면 다음을 사용합니다.

@SuppressWarnings("warningCategory")

예를 들어,

@SuppressWarnings("deprecated")

여러 범주의 경고를 표시하지 않으려면 다음을 사용합니다.

@SuppressWarnings({"warningCategory1", "warningCategory2"})

예를 들어,

@SuppressWarnings({"deprecated", "unchecked"})

카테고리 deprecated 사용되지 않는 요소를 사용할 때 경고를 표시하지 않도록 컴파일러에 지시합니다.

카테고리 unchecked 원시 유형을 사용할 때 경고를 표시하지 않도록 컴파일러에 지시합니다.

그리고 정의되지 않은 경고는 무시됩니다. 예를 들어,

@SuppressWarnings("someundefinedwarning")

예시 3:@SuppressWarnings 주석 예시

class Main {
  @Deprecated
  public static void deprecatedMethod() { 
    System.out.println("Deprecated method"); 
  } 
  
  @SuppressWarnings("deprecated")
  public static void main(String args[]) {
    Main depObj = new Main();
    depObj. deprecatedMethod();
  }
}

출력

Deprecated method

여기 deprecatedMethod() 더 이상 사용되지 않는 것으로 표시되었으며 사용 시 컴파일러 경고가 표시됩니다. @SuppressWarnings("deprecated")을 사용하여 주석을 사용하면 컴파일러 경고를 피할 수 있습니다.

<시간>

4. @SafeVarargs

@SafeVarargs 주석은 주석이 달린 메서드 또는 생성자가 varargs(가변 수의 인수)에 대해 안전하지 않은 작업을 수행하지 않는다고 주장합니다.

재정의할 수 없는 메서드나 생성자에만 이 주석을 사용할 수 있습니다. 이를 재정의하는 메서드가 안전하지 않은 작업을 수행할 수 있기 때문입니다.

Java 9 이전에는 재정의할 수 없기 때문에 최종 또는 정적 메서드에만 이 주석을 사용할 수 있었습니다. 이제 비공개 메서드에도 이 주석을 사용할 수 있습니다.

예시 4:@SafeVarargs 주석 예시

import java.util.*;

class Main {

  private void displayList(List<String>... lists) {
    for (List<String> list : lists) {
      System.out.println(list);
    }
  }

  public static void main(String args[]) {
    Main obj = new Main();

    List<String> universityList = Arrays.asList("Tribhuvan University", "Kathmandu University");
    obj.displayList(universityList);

    List<String> programmingLanguages = Arrays.asList("Java", "C");
    obj.displayList(universityList, programmingLanguages);
  }
}

경고

Type safety: Potential heap pollution via varargs parameter lists
Type safety: A generic array of List<String> is created for a varargs 
 parameter

출력

Note: Main.java uses unchecked or unsafe operations.
[Tribhuvan University, Kathmandu University]
[Tribhuvan University, Kathmandu University]
[Java, C]

여기, List ... lists List 유형의 가변 길이 인수를 지정합니다. . 이것은 displayList() 메소드가 0개 이상의 인수를 가질 수 있습니다.

위의 프로그램은 오류 없이 컴파일되지만 @SafeVarargs일 때 경고를 표시합니다. 주석이 사용되지 않습니다.

@SafeVarargs을 사용할 때 위의 예에서 주석,

@SafeVarargs
 private void displayList(List<String>... lists) { ... }

경고 없이 동일한 출력을 얻습니다. 이 주석을 사용할 때 확인되지 않은 경고도 표시되지 않습니다.

<시간>

5. @FunctionalInterface

Java 8은 이 @FunctionalInterface를 처음 도입했습니다. 주석. 이 주석은 사용되는 형식 선언이 기능적 인터페이스임을 나타냅니다. 기능적 인터페이스는 하나의 추상 메소드만 가질 수 있습니다.

예시 5:@FunctionalInterface 주석 예시

@FunctionalInterface
public interface MyFuncInterface{
  public void firstMethod(); // this is an abstract method
}

다른 추상 메소드를 추가하면

@FunctionalInterface
public interface MyFuncInterface{
  public void firstMethod(); // this is an abstract method
  public void secondMethod(); // this throws compile error
}

이제 프로그램을 실행하면 다음 경고가 표시됩니다.

Unexpected @FunctionalInterface annotation
@FunctionalInterface ^ MyFuncInterface is not a functional interface
multiple non-overriding abstract methods found in interface MyFuncInterface

@FunctionalInterface을 반드시 사용해야 하는 것은 아닙니다. 주석. 컴파일러는 기능 인터페이스 정의를 충족하는 모든 인터페이스를 기능 인터페이스로 간주합니다.

이 주석을 사용하여 기능 인터페이스에 추상 메서드가 하나만 있는지 확인합니다.

그러나 구현이 있기 때문에 기본 및 정적 메서드를 얼마든지 가질 수 있습니다.

@FunctionalInterface
public interface MyFuncInterface{
  public void firstMethod(); // this is an abstract method
  default void secondMethod() { ... } 
  default void thirdMethod() { ... } 
}
<시간>

맞춤 주석

사용자 지정 주석을 만드는 것도 가능합니다.

구문은 다음과 같습니다.

[Access Specifier] @interface<AnnotationName> {         
  DataType <Method Name>() [default value];
}

다음은 맞춤 주석에 대해 알아야 할 사항입니다.

예시 6:맞춤 주석 예시

@interface MyCustomAnnotation {
  String value() default "default value";
}

class Main {
  @MyCustomAnnotation(value = "programiz")
  public void method1() {
    System.out.println("Test method 1");
  }

  public static void main(String[] args) throws Exception {
    Main obj = new Main();
    obj.method1();
  }
}

출력

Test method 1
<시간>

메타 주석

메타 주석은 다른 주석에 적용되는 주석입니다.

1. @보존

@Retention 주석은 주석을 사용할 수 있는 수준을 지정합니다.

구문은 다음과 같습니다.

@Retention(RetentionPolicy)

보존 정책에는 3가지 유형이 있습니다.

예를 들어,

@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation{ ... }
<시간>

2. @문서화

기본적으로 사용자 정의 주석은 공식 Java 문서에 포함되어 있지 않습니다. Javadoc 문서에 주석을 포함하려면 @Documented을 사용합니다. 주석.

예를 들어,

@Documented
public @interface MyCustomAnnotation{ ... }
<시간>

3. @대상

@Target을 사용하여 특정 대상에 적용할 주석을 제한할 수 있습니다. 주석.

구문은 다음과 같습니다.

@Target(ElementType)

ElementType 다음 유형 중 하나를 가질 수 있습니다.

요소 유형 대상
ElementType.ANNOTATION_TYPE 주석 유형
ElementType.CONSTRUCTOR 생성자
ElementType.FIELD 필드
ElementType.LOCAL_VARIABLE 로컬 변수
ElementType.METHOD 방법
ElementType.PACKAGE 패키지
ElementType.PARAMETER 매개변수
ElementType.TYPE 클래스의 모든 요소

예를 들어,

@Target(ElementType.METHOD)
public @interface MyCustomAnnotation{ ... }

이 예에서는 이 주석의 사용을 메서드로만 제한했습니다.

참고: 대상 유형이 정의되지 않은 경우 주석은 모든 요소에 사용할 수 있습니다.

<시간>

4. @상속

기본적으로 주석 유형은 수퍼클래스에서 상속될 수 없습니다. 그러나 슈퍼클래스에서 서브클래스로 주석을 상속해야 하는 경우 @Inherited를 사용합니다. 주석.

구문은 다음과 같습니다.

@Inherited

예를 들어,

@Inherited
public @interface MyCustomAnnotation { ... }

@MyCustomAnnotation
public class ParentClass{ ... }

public class ChildClass extends ParentClass { ... }
<시간>

5. @반복 가능

@Repeatable로 표시된 주석 동일한 선언에 여러 번 적용될 수 있습니다.

@Repeatable(Universities.class)
public @interface University {
  String name();
}

@Repeatable에 정의된 값 주석은 컨테이너 주석입니다. 컨테이너 주석에 변수가 있습니다. 위의 반복 가능한 주석의 배열 유형입니다. 여기 Universities 포함하는 주석 유형입니다.

public @interface Universities {
  University[] value();
}

이제 @University 주석은 동일한 선언에서 여러 번 사용할 수 있습니다.

@University(name = "TU")
@University(name = "KU")
private String uniName;
<시간>

주석 데이터를 검색해야 하는 경우 Reflection API를 사용할 수 있습니다.

주석 값을 검색하려면 getAnnotationsByType()를 사용합니다. 또는 getAnnotations() Reflection API에 정의된 메서드입니다.


java

  1. Java 데이터 유형(기본)
  2. 자바 연산자
  3. 자바 인터페이스
  4. 자바 리소스 사용
  5. 자바 주석
  6. 자바 주석 유형
  7. 예제가 있는 Java 문자열 charAt() 메서드
  8. 예제가 포함된 Java 문자열 endWith() 메서드
  9. Java 문자열 replace(), replaceAll() 및 replaceFirst() 메서드
  10. 자바 - 변수 유형