이미 다른 클래스 (바이트 배열로 사용 가능)에 의해 System 클래스 로더에 의해로드 된 Java 클래스 구현을 대체 (오버라이드) 할 수있는 방법이 있습니까? 두 번째 인쇄 "구현 2"로런타임시 Java 클래스의 구현 대체 (오버라이드)
public class Main {
public static void main(String ... args) {
Foo foo = new Foo();
foo.print();
ClassLoader cl = ...
Foo foo2 = (Foo) cl.newInstance();
foo2.print();
}
}
제 푸 인쇄 "실행 1"인쇄() 메소드 내 역시 설명하기
이 코드를 따른다. foo의 두 번째 인스턴스는 바이트 배열 (파일에 저장되거나 스트림에서 가져올 수있는 클래스)에서 클래스 로더에 의해 검색됩니다.
PS : Foo는 클래스가 아니라 인터페이스를 확장 할 수 없습니다. 즉, 클래스의 구현을 정의하는 실제의 바이트가 오버라이드 (override)됩니다.
정말로 이것을하고 싶으십니까? 왜 그 질문을하는지 설명하는 것이 좋을 것입니다. –