2013-08-13 5 views
-1

클래스 'ABC'가 실행 중이며 run()과 같은 단 하나의 메소드 만 있다고 가정합니다.리플렉션을 사용하여 실행중인 클래스를 동적으로 적용 할 수 있습니까?

리플렉션을 사용하여 'ABC'에 'walk()'라는 메소드가 있는지 확인하고 싶습니다. 'ABC'에는 'walk()'가 없으므로 검색 결과가 음수가됩니다. 하지만 동적으로 플러그인을 추가하거나 'ABC'를 'walk()'메소드 (플러그인 저장소에서 말)를 포함하도록 업데이트 할 수 있습니까? 나는 'ABC'를 멈추고 싶지는 않지만, 즉석에서 요청을 처리하기 위해 그것을 적용 할 수 있습니까?

답변

0

예, 가능합니다. 찾고있는 것은 "바이트 코드 계측"입니다. 클래스로드 타임에이를 수행하고 수정 된 바이트 코드를 클래스 로더에 전달하거나 수정 된 클래스를 디스크에 저장할 수 있습니다. 예를 들어 javassist 라이브러리.

예를 들어 방법을 수정하는 방법은 http://blog.javabenchmark.org/2013/05/java-instrumentation-tutorial.html을 참조하십시오.하지만 새로운 방법을 추가 할 수도 있습니다.

+0

감사합니다. huzi..looking into .. – user2678171

관련 문제