2009-12-11 5 views
5

나는 두 개의 문자열이있다 :Reflection을 사용하여 Java 클래스를 확장하는 방법은 무엇입니까?

Class okClass=aClass.extends(b);//how to implement this? 

방법이 구현하는 :

String a="org.test.A"; 
String b="org.test.B"; 

나는

Class aClass = Class.forName(a); 

내가 aClass 같이, B를 확장하려는 반사

하여 클래스를 얻을?

okClass를 얻는 방법?

감사합니다.

+4

클래스 A를하고, B는 이미 다른 곳에서 정의 ... 또한 편집 바이트 코드를위한 클래스 라이브러리입니다 javassist가? okClass에 정확히 어떤 속성이 필요합니까? 그 질문은 당연한 것입니다. –

답변

8

인터페이스로만 작동하는 JDK dynamic proxy을 사용하는 것 외에도 런타임시 클래스 확장을 위해 CGLIB 또는 javassist를 사용할 수 있습니다.

3

dynamic proxies에서 읽을 수 있습니다. 프록시는 클래스를 확장하지 않지만 호출 핸들러를 통해 클래스 구현에 매핑 할 수있는 인터페이스를 구현합니다.

4

일반적으로 런타임에 새로운 클래스 (객체 아님)를 만들 수 있기를 원합니다. 이 경우 bytecode engineering 또는 java compiler api을 사용할 수 있습니다.

0

으로 내가 CGLIB를보고 권하고 싶습니다 전에 말했지만

관련 문제