본문 바로가기

프로그래밍/JAVA

클래스 동적 생성,호출 (리플렉션)

특정 클래스를 라이브러화 해서 사용하는데, 버전에 따른 api 가 다른 경우에

이를 동적으로 로드해 사용할 수 있다.

 

소스단의 변경없이 라이브러리만 변경해 배포할 수 있으므로, 소스 관리가 좀더 수월 해진다.

C라면 프리 프로세서를 사용하면 여러가지 처리를 할 수 있는데..

 

java는 이러한 처리를 Class 객체를 통해 가능케 한다.

안드로이드에서 이를 이용하기 위해서는

 

1. 특정 클래스 동적으로 생성

Class<?> dyClass=null;

Method dyMethod=null;

 

// 클래스 검색

dyClass = Class.forName("com.something.package.TestClass");

if( dyClass == null ) {

// 클래스 없음.

return;

}

 

// 인자

Class[] arg = new Class[2];

arg[0] = Integer.class;

arg[1] = String.class;

 

// 생성자

Constructor constructor = dyClass.getConstructor(arg);

 

// 생성(new)

Object obj = constructor.newInstance(0, "string");

 

2. 생성자 인자 없는 단순 생성

Class<?> dyClass = Class.forName("class name" );

Object obj = dyClass.newInstance();

 

 

3. 생성된 객체에서 메쏘드 호출

dyMethod = obj.getClass().getMethod("method_name");

dyMethod.invoke( obj );

 

4. 인자있는 메쏘드 호출(클래스 생성자 얻을때와 동일)

dyMethod = obj.getClass().getMethod("method_name", new Class[]{String.class});

Object returnVal = dyMethod.invoke( obj, "test" );

 

 

내용이 부족하지만 위에 언급된 클래스, 메쓰드로 검색해보면

관련 내용이 많음~ -_-;;;

 

주의 사항은 동적생성/호출은 try, catch로 묶어 예외처리가 필수~

'프로그래밍 > JAVA' 카테고리의 다른 글

Apache HttpClient 관련 정리  (0) 2014.03.11
[JAVA TV] MHP 배경이미지 처리  (0) 2013.12.27
[JAVA TV] 타이머  (0) 2013.12.27
[awt] 이미지 읽기~  (0) 2013.12.17
GSON 간단 사용 예  (0) 2013.09.12
CRC16-CCITT crc생성함수  (0) 2012.10.04
ExecutorService  (0) 2012.05.11
정규식 표현  (0) 2012.04.05
이클립스(갈릴레오) SVN 설정  (0) 2009.11.12
쓰레드 기본  (0) 2009.11.10