Java Reflection API : 알아야 할 모든 것



이 기사는 Java Reflection API를 소개하고 Reflection이 Java에서 작동하는 방식과 데모에서 정확히 무엇인지를 설명합니다.

반사 이다 런타임에 클래스의 런타임 동작을 검사하거나 수정하는 프로세스 . 자바 리플렉션 API 런타임에 필드, 메서드, 생성자 등을 포함하는 클래스 및 해당 멤버를 조작하는 데 사용됩니다. 이 기사에서는 Java Reflection API를 자세히 이해합니다.

이 기사에서는 다음 사항에 초점을 맞출 것입니다.





이제 Java Reflection API에 대한이 기사에서 이러한 포인터를 시작하겠습니다.

Java Reflection API는 어디에 사용됩니까?

Reflection API는 주로 다음에서 사용됩니다.



  • IDE (통합 개발 환경) 예 : Eclipse, MyEclipse, NetBeans 등
  • 디버거
  • 테스트 도구 등

그렇다면 Java lang의 클래스는 패키지를 반영합니까?

java.lang.reflect의 클래스 Package?

다음은 리플렉션을 구현하기위한 java.lang.package의 다양한 Java 클래스 목록입니다.

  • :이 클래스는 데이터 유형, 액세스 수정 자, 변수 이름 및 값과 같은 선언적 정보를 수집하는 데 사용됩니다.
  • 방법 :이 클래스는 메서드의 액세스 수정 자, 반환 유형, 이름, 매개 변수 유형 및 예외 유형과 같은 선언적 정보를 수집하는 데 사용됩니다.
  • 빌더 :이 클래스는 생성자의 액세스 수정 자, 이름 및 매개 변수 유형과 같은 선언적 정보를 수집하는 데 사용됩니다.
  • 편집하다 :이 클래스는 특정 액세스 수정 자에 대한 정보를 수집하는 데 사용됩니다.

Java Reflection API 메서드를 살펴 보겠습니다.



java.lang.Class에서 사용되는 메소드

방법

기술

공용 문자열 getName ()

클래스 이름을 반환합니다.

public static Class forName (String className) throws ClassNotFoundException

클래스를로드하고 클래스 클래스의 참조를 반환합니다.

public Object newInstance ()는 InstantiationException, IllegalAccessException을 발생시킵니다.

새 인스턴스를 만듭니다.

공개 부울 isInterface ()

인터페이스인지 확인합니다.

공개 부울 isArray ()

배열인지 확인합니다.

자바에서 xml 파일 구문 분석

공개 부울 isPrimitive ()

원시인지 확인합니다.

public 클래스 getSuperclass ()

슈퍼 클래스 클래스 참조를 반환합니다.

public Field [] getDeclaredFields ()가 SecurityException을 발생시킵니다.

이 클래스의 총 필드 수를 반환합니다.

public Method [] getDeclaredMethods ()가 SecurityException을 발생시킵니다.

이 클래스의 총 메서드 수를 반환합니다.

public Constructor [] getDeclaredConstructors ()가 SecurityException을 발생시킵니다.

이 클래스의 총 생성자 수를 반환합니다.

public Method getDeclaredMethod (String name, Class [] parameterTypes) throws NoSuchMethodException, SecurityException

메서드 클래스 인스턴스를 반환합니다.

기사로 진행하겠습니다.

Class 클래스의 객체를 얻는 방법은 무엇입니까?

Class 클래스의 인스턴스를 얻는 방법은 3 가지가 있습니다. 다음과 같습니다.

  • Class 클래스의 forName () 메서드
  • Object 클래스의 getClass () 메서드
  • .class 구문

Class 클래스의 forName () 메서드

  • 클래스를 동적으로로드하는 데 사용됩니다.
  • Class 클래스의 인스턴스를 반환합니다.
  • 클래스의 정규화 된 이름을 알고있는 경우 사용해야하며 기본 형식에는 사용할 수 없습니다.

forName () 메서드의 간단한 예를 살펴 보겠습니다.

class Simple {} class Test {public static void main (String args []) {Class c = Class.forName ( 'Simple') System.out.println (c.getName ())}}

산출:

단순한

Java Reflection : Object 클래스의 API getClass () 메서드

Class 클래스의 인스턴스를 반환합니다. 유형을 아는 경우 사용해야합니다. 또한 프리미티브와 함께 사용할 수 있습니다.

class Simple {} class Test {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} public static void main (String args []) {Simple s = new Simple () 테스트 t = new Test () t.printName (s)}}

산출:

단순한

.class 구문

유형이 사용 가능하지만 인스턴스가없는 경우 유형 이름에 '.class'를 추가하여 클래스를 얻을 수 있으며, 원시 데이터 유형에도 사용할 수 있습니다.

class Test {public static void main (String args []) {Class c = boolean.class System.out.println (c.getName ()) Class c2 = Test.class System.out.println (c2.getName ()) }}

산출:

부울

테스트

이제이 Java Reflection API 기사를 계속 진행하겠습니다.

Java Reflection API 사용의 장점 및 단점

Java Reflection API 사용의 장점

  • 확장 성 기능 : 응용 프로그램은 정규화 된 이름을 사용하여 확장 성 개체의 인스턴스를 만들어 외부 사용자 정의 클래스를 사용할 수 있습니다.
  • 디버깅 및 테스트 도구 : 디버거는 리플렉션 속성을 사용하여 클래스의 전용 멤버를 검사합니다.

Java Reflection API 사용의 단점

  • 성능 오버 헤드 : 반사 연산은 비 반사 연산보다 성능이 느리므로 성능에 민감한 응용 프로그램에서 자주 호출되는 코드 섹션에서는 피해야합니다.
  • 내부 노출 : 반사 코드는 추상화를 깨뜨 리므로 플랫폼 업그레이드로 동작을 변경할 수 있습니다.

따라서 우리는 'Java Reflection API'에 대한이 기사의 끝까지 왔습니다. 더 자세히 알고 싶다면체크 아웃 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 제공합니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 기사의 댓글 섹션에 언급 해 주시면 최대한 빨리 답변 드리겠습니다.

파이썬에서 바이너리로 변환하는 방법