개발 무지렁이

[Java] 메타정보를 관리하는 Class객체, 리플렉션을 통한 리소스 경로 얻기 본문

Backend/자바

[Java] 메타정보를 관리하는 Class객체, 리플렉션을 통한 리소스 경로 얻기

Gaejirang-e 2023. 8. 11. 23:21

𐂂 리플랙션
자바 클래스인터페이스메타정보Class객체로 관리한다.
(메타정보: 패키지정보, 타입정보, 멤버정보[생성자, 필드, 메서드])
메타정보를 프로그램에서 읽고 수정하는 행위를 '리플랙션'이라고 한다.
  Class clazz = [클래스이름].class;
  Class clazz = Class.forName("패키지... 클래스이름");
  Class clazz = 객체참조변수.getClass();

  clazz.getName() //ch12.sec11.exam01.Car
  clazz.getPackage().getName() //ch12.sec11.exam01
  clazz.getSimpleName() //Car
𐁍 java.lang.reflect

⭐. 생성자, 필드, 메서드에 대한 선언부 경로를 제공한다
  Constructor[] constructors = clazz.getDeclaredConstructors();
  Field[] fields = clazz.getDeclaredFields();
  Method[] methods = clazz.getDeclaredMethods();

  for(Field field : fields) {
      System.out.println(field.getType().getName());
      System.out.println(field.getName());
  }

  for(Method method : methods) {
      method.getParameterTypes();
      method.getName();
  }

𖠃 리소스 경로 얻기
Class객체클래스 파일의 경로정보를 가지고 있다.
경로를 기준으로 상대경로에 있는 다른 리소스 파일의 정보를 얻을 수 있다.

.getResource(String name): 리소스 파일URL리턴
.getResource(String name).getPath(): URL 객체절대경로를 리턴
Comments