1

以前に中間変数に割り当てられたことがない場合、Eclipseデバッガーを使用してメソッドが返す値を変更/定義する方法はありますか?

たとえば、java.lang.Class.classForNameを呼び出すサードパーティのクローズドソースコードがあります。これは次のようになります。

  public static Class<?> forName(String className)
              throws ClassNotFoundException {
      return forName0(className, true, ClassLoader.getCallerClassLoader());
  }

ClassLoader.getCallerClassLoader()によって取得されたクラスローダーはクラスのロードに失敗するため、Thread.currentThread()。contextClassLoaderの方が幸運であるかどうかを試してみたいと思います。だから事実上、私は次のようなものが欲しいです:

   public static Class<?> forName(String className)
               throws ClassNotFoundException {
       return forName0(className, true, Thread.currentThread().contextClassLoader);
   }

これはどういうわけか可能ですか?forName0はネイティブメソッドであることに注意してください。

4

2 に答える 2

0

AspectJのランタイムウィービングを使用して、独自のカスタムアスペクトを適用しClassLoader.getCallerClassLoader()、戻り値を置き換えることができます。

Bugdelを試すこともできます。

于 2012-10-11T16:41:18.097 に答える
-1

戻り値を使用しない場合、Class.forName()はどのような目的に役立ちますか?

静的メソッドにステップインし、そこで微調整できるかどうかを確認します。おそらく静的なものをロードしています

Eclipseでのデバッグ中に静的変数を変更/表示する

于 2012-10-11T15:42:44.720 に答える