Java의 @inherited는 주석이 달린 클래스의 하위 클래스에 상속되도록 주석을 표시하는 데 사용되는 주석입니다. @inherited는 내장된 주석입니다. 주석은 컴파일러에 추가 정보를 제공하는 메타데이터를 나타내는 태그와 같다는 것을 알고 있기 때문입니다. Javadoc에 존재하는 내장 Annotation과 동일하게, Java에 존재하는 Meta Annotation을 또 다른 생성이 가능하다. 실제로 주석에는 두 가지 유형이 있습니다. 하나는 @override와 같이 Java 코드에 적용되는 주석 유형이고 다른 유형은 @target @inherited와 같이 다른 주석에 적용되는 주석입니다. 따라서 @inherited는 하위 클래스를 생성하거나 다른 사용자가 주석을 정의하도록 상속하려는 다른 주석에 적용되는 주석입니다.
광고 이 카테고리에서 인기 있는 강좌 JAVA MASTERY - 전문 분야 | 78 코스 시리즈 | 15가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
구문
Java에서 @inherited 구문은 –
@Inherited public @interface MyAnnotation {// code of the MyAnnotation } @MyAnnotation public class SuperClass { // code of the SuperClass } public class SubClass extends SuperClass { // code of the SubClass }
위 구문과 마찬가지로 SubClass 클래스는 SuperClass에서 상속되고 SuperClass에 @MyAnnotation 주석이 있으므로 @MyAnnotation 주석에서 상속됩니다.
Java에서 @Inherited는 어떻게 작동하나요?
@Inherited 주석은 @interface 접두사로 붙여야 하는 주석(위 구문의 MyAnnotation)에 사용되거나 주석이 추가됩니다. 다음으로 이 주석(MyAnnotation)은 @MyAnnotation으로 적용해야 하는 곳에서 사용할 수 있습니다. 이러한 주석은 요소 선언 직전에 적용될 수 있으며 변수, 클래스, 생성자, 메소드 등과 같은 프로그램의 모든 요소에 적용될 수 있습니다. 이 사용자 정의 주석이 슈퍼클래스에 주석되면 자동으로 상속됩니다. 아래 예에서 볼 수 있듯이 하위 클래스(위 구문과 같은 하위 클래스).
Java에서 @Inherited 주석을 구현하는 예
다음으로 @Inherited 주석을 사용하여 슈퍼클래스의 하위 클래스에서 상속하는 다음 예를 통해 @Inherited 주석을 더 명확하게 이해하기 위해 Java 코드를 작성합니다.
예시 #1
먼저 이름과 코드라는 두 개의 필드가 있는 @MyAnnotation 주석에 대한 인터페이스를 만듭니다.
코드: //MyAnnotation.java
package demo; import java.lang.annotation.Inherited; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Inherited @Target ({ElementType.TYPE, ElementType.METHOD}) @Retention (RetentionPolicy.RUNTIME) public @interface MyAnnotation { String name () default "unknown"; String code () default " "; }
다음으로 클래스, 메소드 또는 변수에 주석을 추가하고 상태 이름과 상태 코드를 제공하여 위 주석을 사용하는 슈퍼클래스를 생성합니다.
코드: //Super.java
package demo; import demo.MyAnnotation; @MyAnnotation (name = "Karnataka", code = "KA") public class Super { public String getstateinfo () { return null; } }
다음으로 주석은 메타데이터이기 때문에 사용합니다. 즉, 필요할 때 주석 정보를 사용하려면 이 메타데이터나 정보를 얻을 수 있어야 합니다.
코드: //Demo.java
//as sub class package demo; import demo.MyAnnotation; import demo.Super; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Method; public class Demo extends Super { public static void main ( String[] arg ) throws Exception { new Super (); Class <super>obj = Super.class; getstateinfo (obj); Method m = obj.getMethod ("getstateinfo", new Class[]{}); getstateinfo (m); } static void getstateinfo (AnnotatedElement e) { try { System.out.println ("Finding annotations on " + e.getClass ().getName ()); Annotation[] annotations = e.getAnnotations (); for (Annotation a : annotations) { if (a instanceof MyAnnotation) { MyAnnotation stateInfo = (MyAnnotation) a; System.out.println("Name of Annotation :" + stateInfo.annotationType ()); System.out.println("State Name :" + stateInfo.name ()); System.out.println("State code :" + stateInfo.code ()); System.out.println(new Demo ().getClass ().getAnnotation (MyAnnotation.class)); System.out.println(new Super ().getClass ().getAnnotation (MyAnnotation.class)); } } } catch (Exception ex) { System.out.println( ex ); } } }</super>
출력: Demo.java 클래스를 실행하면 출력은 다음과 같습니다.
설명: 위 코드와 마찬가지로 MyAnnotation 주석이 생성되고 @Inherited라는 주석도 추가됩니다. 슈퍼클래스에서 MyAnnotation 주석은 @MyAnnotation 문을 사용하여 클래스에 주석을 달았습니다. 그리고 또 다른 클래스 Demo가 생성되는데, 이는 Superclass로 확장되었기 때문에 Superclass의 하위 클래스입니다. Demo 클래스의 기본() 메소드에서 더 멀리 떨어져 있으면 슈퍼클래스의 객체가 getstateinfo()라는 메소드를 생성하고 액세스합니다. 이 메소드를 통해 모든 주석을 반복하고 주석이 MyAnnotation에 없는지 여부를 확인합니다. 그렇다면 일부를 인쇄합니다. 위에서 볼 수 있듯이 정보의. 그러나 한 가지 중요한 점은 Demo 클래스 또는 해당 요소 중 하나가 MyAnnotation에 주석이 추가되지 않았지만 Superclass에 고유하고 Superclass가 MyAnnotation을 상속받았기 때문에 MyAnnotation이 이 클래스에 주석이 달린 것으로 여전히 표시된다는 것입니다.
다음으로 @Inherited 주석을 더 명확하게 이해하기 위해 위의 Java 코드를 다시 작성합니다. 여기서는 @Inherited 주석을 MyAnnotation 주석에 사용하지 않고(위 예에서 생성된 주석으로) 이 주석이 상속되었는지 확인합니다. 아래와 같이 상위 클래스의 하위 클래스에 있는지 여부 –
예시 #2
Super.java 및 Demo.java 클래스는 해당 클래스에 변경 사항 없이 위와 동일하게 유지하지만 MyAnnotation.java 클래스에서는 거의 변경하지 않고 MyAnnotation에서 주석을 달기 위해 @Inherited 주석을 제거합니다. 아래에서 볼 수 있듯이 –
코드: //MyAnnotation.java
package demo; import java.lang.annotation.Inherited; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; // no @Inherited @Target ({ElementType.TYPE, ElementType.METHOD}) @Retention (RetentionPolicy.RUNTIME) public @interface MyAnnotation { String name () default "unknown"; String code () default " "; }
출력: 다음으로 Demo.java 클래스를 실행하면 출력은 다음과 같습니다.
설명: 위 출력에서와 같이 상태 코드 뒤에 "null" 값이 인쇄되는 것을 볼 수 있습니다. 이는 "new Demo ().getClass () 문의 반환 값입니다. .getAnnotation (MyAnnotation.class)”, 이는 @Inherited 주석이 하위 클래스에서 상속하기 위해 MyAnnotation에 주석이 추가되지 않기 때문에 데모 클래스가 슈퍼클래스에서 MyAnnotation 주석을 상속(또는 주석을 달지)하지 않음을 의미합니다.
결론
Java의 @inherited는 다른 주석에 적용되는 내장 주석입니다. 주석이 달린 클래스의 하위 클래스에 상속될 주석을 표시하는 데 사용됩니다. @inherited는 java.lang.annotation.Inherited 패키지에서 사용할 수 있습니다.
위 내용은 자바 @상속됨의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.
