Javaクラスの実装を置き換える(オーバーライドする)方法はありますか?別の実装(バイト配列として使用可能)によってSystemクラスのローダーによって既に読み込まれていますか?第1のプリント「実装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();
}
}
第Fooの印刷物「実装1」のプリント()方法であって、私の疑問を説明するために
は、このコードに従います。 fooの2番目のインスタンスはクラスローダーによってバイトの配列から取り出されます(ファイルに格納することも、ストリームから取得することもできます)。
PS:Fooはクラスではなく、インタフェースを拡張することはできません。つまり、クラス実装を定義する実際のバイト(VM内)がオーバーライドされます。
あなたは本当にこれをしたいと思っていますか?なぜその質問に説明するのがよいでしょう。 –