티스토리 뷰
동적으로 다른 클래스의 메서드와 필드값을 불러와서 사용해야 하는 경우, 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);
//--------------------------------------------------------------------------------
'공장 (factory) > - Programming..' 카테고리의 다른 글
[Spring/Java] Redis Spring Framework 연동 (0) | 2021.10.01 |
---|---|
[Java] Java Stream 예제 몇 가지 (0) | 2021.08.03 |
[Python] PIL(Python Image Library) 이미지에 텍스트 넣기. (0) | 2020.04.09 |
[Python] paramiko를 이용한 ssh접속 후 명령어 실행. (2) | 2020.04.09 |
[Python] pyodbc를 이용한 MSSQL DB조회 (1) | 2020.04.09 |
댓글