Java의 주석: 유형, 사용 및 예
게시 됨: 2022-05-19Java와 같은 프로그래밍 언어의 주석은 Java의 소스 코드와 통합할 수 있는 구문 메타데이터를 나타냅니다. Java 패키지, 변수, 클래스, 매개변수 및 메소드와 같은 다양한 요소에 주석을 달 수 있습니다. 개발자는 Javadoc 태그와 마찬가지로 소스 파일에서 직접 Java 주석을 쉽게 읽을 수 있습니다.
Java 주석은 Java 컴파일러의 출력 Java 클래스 파일에 포함되고 읽을 수도 있습니다. 이를 통해 Java 가상 머신은 주석을 유지 관리하고 런타임에 리플렉션을 통해 주석을 읽을 수 있습니다. Java에서는 기존 주석에서 메타 주석을 빌드할 수 있습니다.
다음은 Java 주석의 몇 가지 기본 사항입니다.
- 주석은 항상 '@'로 시작합니다. 예: '@override', '@target', '@SuppressWarnings' 등
- 주석은 컴파일된 프로그램의 동작에 영향을 주지 않습니다.
- 주석은 메서드, 클래스, 변수 등과 같은 프로그램 구성 요소에 메타데이터를 연결하는 데 도움이 됩니다.
- 주석은 컴파일러에서 프로그램을 처리하는 방법에 영향을 줄 수 있으므로 주석이 아닙니다. 프로그램에 대한 추가 컴파일러 정보를 제공하지만 프로그램 자체의 일부는 아닙니다. 따라서 이러한 주석은 컴파일된 프로그램의 실행에 영향을 주지 않습니다.
Java의 주석 유형
1. 단일 값 주석
단일 값 주석은 하나의 멤버만 포함하므로 하나의 약식 양식만 허용합니다. 멤버에는 주석 적용 후 값이 제공되어야 합니다. 그러나 주석의 이름은 지정할 필요가 없습니다. 속기를 사용하려면 멤버에 값이 있어야 합니다. 예를 들어:
@TestAnnotation("테스트");
2. 전체 주석
전체 주석은 데이터 멤버, 값, 쌍 및 이름과 같은 다양한 데이터로 구성됩니다.
예를 들어:
@TestAnnotation(owner=”Rahul”, value=”Class Geeks”)
세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정 을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
3. 주석 반복
주석이 단일 객체에 두 번 이상 적용될 수 있는 경우 반복 주석으로 레이블이 지정됩니다. 반복 주석은 java.lang.annotation 패키지에 정의된 @Repeatable 태그로 지정됩니다. 값 필드는 반복되는 주석의 컨테이너 유형을 나타냅니다.
컨테이너는 반복되는 주석 배열을 포함하는 값 필드가 있는 주석으로 정의됩니다. 반복되는 주석을 구성하려면 먼저 컨테이너 주석을 생성한 다음 주석 유형을 @Repeatable 주석에 대한 입력으로 지정합니다.
예를 들어:
// 반복 가능한 주석을 보여주는 Java 프로그램
// 필수 클래스 가져오기
import java.lang.annotation.Annotation;
가져오기 java.lang.annotation.Repeatable;
가져오기 java.lang.annotation.Retention;
가져오기 java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
// 단어 주석을 반복 가능하게 만듭니다.
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MyRepeatedAnnos.class)
@인터페이스 단어
{
문자열 word() 기본 "안녕하세요";
정수 값() 기본값 0;
}
// 컨테이너 주석 생성
@Retention(RetentionPolicy.RUNTIME)
@인터페이스
{
단어[] 값();
}
공개 클래스 메인 {
// newMethod에서 단어 반복
@Words(단어 = "첫 번째", 값 = 1)
@Words(단어 = "초", 값 = 2)
공개 정적 무효 newMethod()
{
메인 obj = 새로운 메인();
노력하다 {
클래스<?> c = obj.getClass();
// newMethod에 대한 주석을 얻습니다.
메소드 m = c.getMethod("newMethod");
// 반복되는 주석 표시
주석
= m.getAnnotation(MyRepeatedAnnos.class);
System.out.println(아노);
}
잡기 (NoSuchMethodException e) {
System.out.println(e);
}
}
공개 정적 무효 메인(String[] 인수) { newMethod(); }
}
최종 출력은 다음과 같습니다. @MyRepeatedAnnos(value={@Words(value=1, word=”First”), @Words(value=2, word=”Second”)})
인기 있는 소프트웨어 엔지니어링 과정 살펴보기
에스엘. 아니 | 소프트웨어 개발 프로그램 | |
1 | LJMU 및 IIITB의 컴퓨터 과학 석사 | Caltech CTME 사이버 보안 인증 프로그램 |
2 | 전체 스택 개발 부트캠프 | 블록체인 PG 프로그램 |
삼 | 소프트웨어 개발의 이그 제 큐 티브 포스트 대학원 프로그램 - DevOps 전문화 | 모든 소프트웨어 엔지니어링 코스 보기 |
3. 마커 주석
마커 주석은 선언 목적으로만 사용됩니다. 이 주석에는 구성원이 포함되어 있지 않으며 그 안에 데이터도 없습니다. 유일한 목적은 주석으로 존재를 유지하는 것입니다. 예: @Override.
4. 주석 입력
이러한 주석은 유형이 사용되는 모든 곳에서 사용할 수 있습니다. 예를 들어 메서드의 반환 유형에 주석을 달 수 있습니다. 유형 주석은 @Target 주석으로 태그가 지정됩니다.
유형 주석을 설명할 수 있는 코드는 다음과 같습니다.
// 필수 클래스 가져오기
가져오기 java.lang.annotation.ElementType;
import java.lang.annotation.Target;
// 타겟 어노테이션을 사용하여 타입 어노테이션
@Target(ElementType.TYPE_USE)
// 단순 유형 주석 선언
@인터페이스 유형AnnoDemo{}
// 메인 클래스
공개 클래스 GFG {
// 메인 드라이버 메소드
공개 정적 무효 메인(문자열[] 인수) {
// 문자열 유형에 주석 달기
@TypeAnnoDemo String string = "이 코드는 유형 주석으로 주석 처리됩니다.";
System.out.println(문자열);
알파벳();
}
// 함수의 반환 유형에 주석 달기
정적 @TypeAnnoDemo int abc() {
System.out.println("이 함수의 반환 유형에 주석이 달려 있습니다.");
반환 0;
}
사전 정의된 주석의 예
앞에서 언급한 다양한 사전 정의된 주석이 있습니다. 살펴보겠습니다.
1. @오버라이드
이 마커 주석은 메서드에서만 사용할 수 있습니다. @override 어노테이션이 있는 모든 메소드는 수퍼클래스의 다른 메소드를 대체해야 합니다. 실패하면 컴파일 타임 오류가 발생합니다. 이것은 슈퍼클래스가 단순히 오버로드되지 않고 실제로 오버라이드되었는지 확인해야 하기 때문에 발생합니다.
재정의 주석을 설명할 수 있는 코드는 다음과 같습니다.
// 클래스 1
클래스 베이스
{
공개 무효 Display()
{
System.out.println("기본 디스플레이()");
}
공개 정적 무효 메인(문자열 인수[])
{
기본 t1 = new Derived();
t1.디스플레이();
}
}
// 클래스 2
// 클래스 위에서 확장
파생 클래스는 기본을 확장합니다.
{
@우세하다
공개 무효 Display()
{
System.out.println("파생된 디스플레이()");
}
}
2. @대상
다른 주석에 대한 주석으로만 사용하기 위한 것입니다. @Target은 ElementType 상수여야 하는 하나의 매개변수를 허용합니다. 매개변수는 적용할 수 있는 선언을 결정합니다. @Target 주석은 단일 값 대신 여러 값을 가질 수 있습니다. 그러나 여러 값을 선언해야 하는 경우 @Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE})과 같은 중괄호 형식이어야 합니다.
@Retention 주석은 주석의 보존 상태를 결정하기 위해 여기에서 사용될 수 있습니다. 세 가지 요소가 @Retention 주석에 영향을 줍니다.
- 소스: 컴파일러는 일반적으로 소스 수준에서 유지되는 주석을 무시합니다.
- 런타임: 런타임에 유지됩니다.
- 클래스: 주석은 컴파일 시간에 유지되며 Java 프로그램에서 무시됩니다.
3. @상속
이 주석은 선언 목적으로만 사용할 수 있으므로 특정 클래스 선언에만 영향을 줍니다. 하나의 주석이 다른 주석을 대체하고 해당 속성을 상속할 수 있습니다. 따라서 하위 클래스에 특정 주석이 없는 경우 상위 클래스를 확인할 수 있습니다. 그러나 주석이 있으면 @Inherited 주석을 얻습니다.
예를 들어:
// 클래스 1
클래스 DeprecatedTest
{
@더 이상 사용되지 않음
공개 무효 Display()
{
System.out.println("사용되지 않는 테스트 디스플레이()");
}
}
// 클래스 2
공개 클래스 SuppressWarningTest
{
// 주석 아래에 주석을 추가하면 프로그램이 생성합니다.
// 경고
@SuppressWarnings({"확인됨", "사용 중단"})
공개 정적 무효 메인(문자열 인수[])
{
DeprecatedTest d1 = 새로운 DeprecatedTest();
d1.디스플레이();
}
}
결론
여기에서 우리는 Java의 주석에 대해 배웠습니다. 또한 Java의 주석 유형과 Java 개발자가 강력하고 확장 가능한 프로그램을 쉽게 만드는 데 도움이 되는 용도에 대해서도 배웠습니다.
Java 개념에 대해 더 자세히 알고 싶다면 upGrad의 소프트웨어 엔지니어링 직업 연결 PG 인증은 Java, HTML, JS, 기타 소프트웨어 개발 도구 및 라이브러리와 같은 프로그래밍 언어에 대한 포괄적인 이해를 얻는 가장 좋은 방법입니다.
이 프로그램은 해당 분야의 초급 직위를 확보하고자 하는 최종 학년 학생 또는 실업자 졸업생을 위해 고안되었습니다. 5개월 과정은 MERN/클라우드 네이티브의 전문화를 다루며 학생들이 5가지 실습 프로젝트에 노출시켜 최고 수준의 포트폴리오를 구축하도록 돕습니다.
기다리지 마세요. 오늘 upGrad로 가서 좌석을 예약하세요!
@jsonproperty 주석이란 무엇입니까?
Jsonproperty 주석을 사용하면 개발자가 직렬화 및 역직렬화 중에 JSON 키를 속성 이름과 매핑할 수 있습니다. Java의 기본 설정에 따라 키는 직렬화 중에 POJO 필드에 매핑됩니다. Json 주석은 매핑된 이름을 나타내는 문자열 속성을 사용하여 이 기본 기능을 재정의하는 데 도움이 됩니다.
최대 절전 모드 주석이란 무엇입니까?
Hibernate Annotations는 Object 및 Relational Table을 매핑할 때 메타데이터를 지정하는 또 다른 기술입니다. XML 매핑 메타데이터 대신 사용할 수 있는 강력하고 비교적 새로운 매핑 방법입니다. 최대 절전 모드 주석을 사용하여 사용자는 코드도 포함하는 단일 POJO Java 파일에 메타데이터를 저장할 수 있으므로 테이블 구조를 더 잘 이해하는 데 도움이 됩니다.
@SuppressWarnings는 무엇입니까?
@SuppressWarnings 주석은 억제된 경고를 컴파일러에 알립니다. 알림은 이름별로 문자열 형식으로 표시됩니다. 어떤 종류의 선언에도 주어질 수 있습니다. Java는 경고를 확인되지 않은 것과 더 이상 사용되지 않는 두 가지 클래스로 분류합니다. 이전 코드가 제네릭 기반 코드와 상호 작용하면 확인되지 않은 경고가 생성됩니다.