루이의 개발 블로그

리플렉션 본문

기술용어

리플렉션

루이96 2023. 9. 23. 11:18

 

구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할수 있도록 해주는 자바 API

리플렉션은 언제 사용할까?

동적으로 클래스를 사용해야할 때 (or 어떤 클래스를 사용 해야할 지 모를 때)

소스코드 사용예시

부모, 자식, main 소스코드 파일을 만들어서 예시를 보여준다면.



우선 메서드 선언 들은 무시하고 같은 패키지 안에
parent, child, Test 메서드가 아래와 같이 정의 되어있다고 이해하자

  • reflectiontest
    • parent (부모)
      • child (자식)
    • Test (main)

  • 클래스객체 타입으로 clazz 를 선언하여 Child.class 를 담아준다.
  • 객체의 getName() 호출을 하면 test안에 있는 Child 의 클래스명 이 출력되는 것을 확인할 수 있다.
  • Class.forName 를 사용하여 문자열 을 넣어서 클래스 정보를 가져올 수 있다.
그렇다면 개념에서 말한 구체적인 클래스 타입을 알지 못하더라도라는 말과 무슨 관계가 있나?
  • 핵심은 클래스를 문자열로 찾아낼 수 있다는 점이다.

 

클래스정보 

package reflection
class Child{}
class Child2{}
class Child3{}

String[] classList = {"Test.Child", "Test.Child2", "Test.Child3"};
Class clazz2 = Class.forName(classList[0]));
System.out.println("Class name: " + clazz2.getName()); //출력 Class name: test.Child
  • 이처럼 클래스를 String 변수, 배열 을 통해 접근 하는게 가능 하다는 것이다.

이로서 동적으로 클래스를 선택하여 사용 할 수 있게 된다.

 

 

사진출처 : https://jeongkyun-it.tistory.com/225

'기술용어' 카테고리의 다른 글

동기처리와 비동기처리  (0) 2023.09.29
버퍼블로트(Bufferbloat)  (0) 2023.09.29
클래스 객체  (0) 2023.09.23
데이터 마이그레이션  (0) 2023.09.23
레이턴시  (0) 2023.09.16