2009-06-18 6 views
5

런타임시 클래스를 추가하거나 확장 할 수 있습니까? 나는 런타임에 기존 클래스를 확장하고이를 클래스 패스에 추가해야하므로이 새로운 클래스가 선택되도록하는 문제에 봉착했다. 당신은 BCEL보고 할 수 있습니다Java에서 런타임시 새 클래스 확장 또는 추가

덕분에,

답변

4

. 귀하가해야 할 일에 대한 더 이상의 정보가 없으면보다 구체적인 대답을하는 것이 까다 롭습니다.

0

이 기능이 필요한 이유는 분명히 작성해야합니다. 런타임에 논리를 추가하거나 교체하려는 경우 scripting API과 실제 값이 implementations 일 수 있습니다.

11

이렇게 할 수있는 방법에는 여러 가지가 있습니다. javax.tools 패키지를 사용하여 다음 ClassLoader를 사용하여로드 실행시

  • 컴파일 소스 코드.
  • 인터페이스에 쓰는 경우 Proxy으로 클래스를 꾸밀 수 있습니다.
  • BCEL 또는 ASM과 같은 기술을 사용하여 바이트 코드 조작/생성의 더 복잡한 경로를 택한 다음 (주석에는 주석과 같은 언어 기능에 대한 최신 지원이 추가되어 있음) ClassLoader로 클래스를로드하십시오.

다른 옵션이 있다고 생각합니다.

관련 문제