私は、クラスファイルのバイトを表すバイトの配列を持っています。クラスがバイト配列の形式である間に、クラスのスーパークラスを決定しますか?
バイト配列で表されるクラスのスーパークラスを取得しようとしています。現在、ClassLoaderクラスの "defineClass"メソッドのリフレクションを使用して、バイト配列で表されるクラスのクラス定義を作成しています。次に、新しく作成されたClassオブジェクトでgetSuperclass()を呼び出してスーパークラスを取得します。
バイト配列で表されるクラスのスーパークラスに基づいて、私はバイトコード変換を実行する必要があります。最後の目標は、変換後にバイト配列によって表されるクラスを再定義することです。
問題は、同じ名前の2つのクラスを同じJVMインスタンスで定義できないため、変換されたクラスを元の名前として再定義できないことです。
実際には、バイト配列で表されるクラスのスーパークラスに基づいて変換を行う必要があり、元の名前で変換されたクラスを再定義する必要があります。
クラスがバイト配列の形式である間にクラスのスーパークラスを取得する方法はありますか? .classファイルのフォーマットに基づいて、私はクラスオブジェクトをクラスオブジェクトとして定義し、それをJVMにロードせずに何とかしてスーパークラスを決定することができると思います。
提案がありますか?
これは実際には動作するのかどうかは考えられませんが、別の名前空間を使用しますか? –
バイトコードを解析するだけです。 –