Reflection을 활용한 메서드, 필드 값 불러오기.

by 조쉬 posted Mar 31, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

동적으로 다른 클래스의 메서드와 필드값을 불러와서 사용해야 하는 경우, Java Reflection을 활용하면 가능하다.

// 메서드-------------------------------------------------------------------------
Method getSomethingMethod = ClassName.getClass().getDeclaredMethod("getSomething", String.class);
getSomethingMethod.setAccessible(true); // private 함수 접근 허용.
String someString = (String) getSomethingMethod.invoke("something");
 
 
// 불러올 메서드가 static일 때.
Method getSomethingMethod = ClassName.class.getDeclaredMethod("getSomething", MemberVo.class, String.class); // getClass() 대신 class
getSomethingMethod.setAccessible(true); // private 접근 허용
String someString = (String) getSomethingMethod.invoke(null, memberVo, "something"); // null
//--------------------------------------------------------------------------------
 
// 필드---------------------------------------------------------------------------
Field pathField = ClassName.getClass().getDeclaredField("urlPath");
if(!pathField.isAccessible()) pathField.setAccessible(true); // private 접근 허용
String pathVal = (String) pathField.get(ClassName.class);
 
// 불어올 필드가 static일 때.
Field pathField = ClassName.class.getDeclaredField("urlPath");
if(!pathField.isAccessible()) pathField.setAccessible(true); // private 접근 허용
String pathVal = (String) pathField.get(ClassName.class);
//--------------------------------------------------------------------------------