특정 클래스를 라이브러화 해서 사용하는데, 버전에 따른 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 |