logo

자바 주석

자바 주석 을 나타내는 태그입니다. metadata 즉, Java 컴파일러 및 JVM에서 사용할 수 있는 추가 정보를 나타내기 위해 클래스, 인터페이스, 메소드 또는 필드가 첨부됩니다.

Java의 주석은 추가 정보를 제공하는 데 사용되므로 XML 및 Java 마커 인터페이스의 대체 옵션입니다.

먼저 몇 가지 기본 제공 주석을 배운 다음 사용자 정의 주석을 만들고 사용하는 방법으로 넘어갑니다.


내장 Java 주석

Java에는 여러 가지 내장 주석이 있습니다. 일부 주석은 Java 코드에 적용되고 일부 주석은 다른 주석에 적용됩니다.

Java 코드에 사용되는 내장 Java 주석

  • @우세하다
  • @SuppressWarnings
  • @더 이상 사용되지 않음

다른 주석에 사용되는 내장 Java 주석

  • @표적
  • @보유
  • @상속됨
  • @문서화됨

내장 주석 이해

먼저 내장된 주석을 이해해 봅시다.

@우세하다

@Override 주석은 하위 클래스 메서드가 상위 클래스 메서드를 재정의하도록 보장합니다. 그렇지 않으면 컴파일 타임 오류가 발생합니다.

때로는 철자 오류 등 어리석은 실수를 저지르는 경우도 있습니다. 따라서 메서드가 재정의되었음을 보장하는 @Override 주석을 표시하는 것이 좋습니다.

자바 연산자 우선순위
 class Animal{ void eatSomething(){System.out.println('eating something');} } class Dog extends Animal{ @Override void eatsomething(){System.out.println('eating foods');}//should be eatSomething } class TestAnnotation1{ public static void main(String args[]){ Animal a=new Dog(); a.eatSomething(); }} 
지금 테스트해보세요
 Output:Comple Time Error 

@SuppressWarnings

@SuppressWarnings 주석: 컴파일러가 발행한 경고를 억제하는 데 사용됩니다.

 import java.util.*; class TestAnnotation2{ @SuppressWarnings('unchecked') public static void main(String args[]){ ArrayList list=new ArrayList(); list.add('sonoo'); list.add('vimal'); list.add('ratan'); for(Object obj:list) System.out.println(obj); }} 
지금 테스트해보세요
 Now no warning at compile time. 

@SuppressWarnings('unchecked') 주석을 제거하면 제네릭이 아닌 컬렉션을 사용하고 있기 때문에 컴파일 타임에 경고가 표시됩니다.


@더 이상 사용되지 않음

@Deprecated 주석은 이 메서드가 더 이상 사용되지 않음을 표시하므로 컴파일러는 경고를 인쇄합니다. 향후 버전에서는 제거될 수 있음을 사용자에게 알립니다. 그러므로 그러한 방법은 사용하지 않는 것이 좋습니다.

C 언어의 행렬
 class A{ void m(){System.out.println('hello m');} @Deprecated void n(){System.out.println('hello n');} } class TestAnnotation3{ public static void main(String args[]){ A a=new A(); a.n(); }} 
지금 테스트해보세요

컴파일 시:

 Note: Test.java uses or overrides a deprecated API. <br> Note: Recompile with -Xlint:deprecation for details. 

런타임 시:

 hello n 

Java 사용자 정의 주석

Java 사용자 정의 주석 또는 Java 사용자 정의 주석은 생성 및 사용이 쉽습니다. 그만큼 @상호 작용 요소는 주석을 선언하는 데 사용됩니다. 예를 들어:

 @interface MyAnnotation{} 

여기서 MyAnnotation은 사용자 정의 주석 이름입니다.

Java 사용자 정의 주석 서명에 대해 기억해야 할 사항

프로그래머가 기억해야 할 몇 가지 사항이 있습니다.

  1. 메소드에는 throws 절이 있어서는 안 됩니다.
  2. 메소드는 기본 데이터 유형, 문자열, 클래스, 열거형 또는 이러한 데이터 유형의 배열 중 하나를 반환해야 합니다.
  3. 메소드에는 매개변수가 없어야 합니다.
  4. Annotation을 정의하려면 인터페이스 키워드 바로 앞에 @를 붙여야 합니다.
  5. 메소드에 기본값을 할당할 수 있습니다.

주석 유형

주석에는 세 가지 유형이 있습니다.

  1. 마커 주석
  2. 단일 값 주석
  3. 다중 값 주석
Java 주석 유형

1) 마커 주석

메소드가 없는 주석을 마커 주석이라고 합니다. 예를 들어:

 @interface MyAnnotation{} 

@Override 및 @Deprecated는 마커 주석입니다.

YouTube VLC에서 비디오 다운로드

2) 단일 값 주석

하나의 메서드가 있는 주석을 단일 값 주석이라고 합니다. 예를 들어:

 @interface MyAnnotation{ int value(); } 

기본값을 제공할 수도 있습니다. 예를 들어:

 @interface MyAnnotation{ int value() default 0; } 

단일 값 주석을 적용하는 방법

단일 값 주석을 적용하는 코드를 살펴보겠습니다.

 @MyAnnotation(value=10) 

값은 무엇이든 될 수 있습니다.


3) 다중값 주석

둘 이상의 메소드가 있는 주석을 다중 값 주석이라고 합니다. 예를 들어:

 @interface MyAnnotation{ int value1(); String value2(); String value3(); } } 

기본값을 제공할 수도 있습니다. 예를 들어:

 @interface MyAnnotation{ int value1() default 1; String value2() default &apos;&apos;; String value3() default &apos;xyz&apos;; } 

다중값 주석을 적용하는 방법

다중 값 주석을 적용하는 코드를 살펴보겠습니다.

 @MyAnnotation(value1=10,value2=&apos;Arun Kumar&apos;,value3=&apos;Ghaziabad&apos;) 

Java의 사용자 정의 주석에 사용되는 내장 주석

  • @표적
  • @보유
  • @상속됨
  • @문서화됨

@표적

@표적 태그는 주석이 사용되는 유형을 지정하는 데 사용됩니다.

YouTube VLC 미디어 플레이어 다운로드

java.lang.annotation. 요소 유형 enum은 TYPE, METHOD, FIELD 등과 같이 주석이 적용될 요소의 유형을 지정하기 위해 많은 상수를 선언합니다. ElementType enum의 상수를 살펴보겠습니다.

요소 유형주석을 적용할 수 있는 위치
유형클래스, 인터페이스 또는 열거형
필드필드
방법행동 양식
건설자생성자
LOCAL_VARIABLE지역 변수
ANNOTATION_TYPE주석 유형
매개변수매개변수

클래스에 주석을 지정하는 예

 @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); } 

클래스, 메소드 또는 필드에 대한 주석을 지정하는 예

 @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @interface MyAnnotation{ int value1(); String value2(); } 

@보유

@보유 주석은 주석을 사용할 수 있는 수준을 지정하는 데 사용됩니다.

보존 정책유효성
보존 정책.소스컴파일 중에 삭제되는 소스 코드를 나타냅니다. 컴파일된 클래스에서는 사용할 수 없습니다.
RetentionPolicy.CLASSJava 컴파일러에서는 사용할 수 있지만 JVM에서는 사용할 수 없는 .class 파일을 참조합니다. 클래스 파일에 포함되어 있습니다.
RetentionPolicy.RUNTIMEJava 컴파일러 및 JVM에서 사용할 수 있는 런타임을 나타냅니다.

RetentionPolicy를 지정하는 예

 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); } 

맞춤 주석의 예: 주석 생성, 적용 및 액세스

주석을 생성하고 적용하고 액세스하는 간단한 예를 살펴보겠습니다.

파일: Test.java

 //Creating annotation import java.lang.annotation.*; import java.lang.reflect.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @interface MyAnnotation{ int value(); } //Applying annotation class Hello{ @MyAnnotation(value=10) public void sayHello(){System.out.println(&apos;hello annotation&apos;);} } //Accessing annotation class TestCustomAnnotation1{ public static void main(String args[])throws Exception{ Hello h=new Hello(); Method m=h.getClass().getMethod(&apos;sayHello&apos;); MyAnnotation manno=m.getAnnotation(MyAnnotation.class); System.out.println(&apos;value is: &apos;+manno.value()); }} 
지금 테스트해보세요
 Output:value is: 10 

이 예제를 다운로드하세요

실제 시나리오에서는 내장 주석이 어떻게 사용됩니까?

실제 시나리오에서 Java 프로그래머는 주석만 적용하면 됩니다. 그/그녀는 주석을 생성하고 액세스할 필요가 없습니다. 주석 생성 및 액세스는 구현 공급자가 수행합니다. 주석 대신 Java 컴파일러 또는 JVM이 몇 가지 추가 작업을 수행합니다.


@상속됨

기본적으로 주석은 하위 클래스로 상속되지 않습니다. @Inherited 주석은 주석이 하위 클래스에 상속되도록 표시합니다.

 @Inherited @interface ForEveryone { }//Now it will be available to subclass also @interface ForEveryone { } class Superclass{} class Subclass extends Superclass{} 

@문서화됨

@Documented는 문서에 포함할 주석을 표시합니다.