1
私は、バイト・バディ1.6.9を使用して静的メソッドを再定義する方法を教えてください。ByteBuddyで静的メソッドを再定義する
私はこれを試してみました:スレッド "メイン" java.lang.IllegalStateExceptionで
例外:
public class Source {
public static String hello(String name) {return null;}
}
public class Target {
public static String hello(String name) {
return "Hello" + name+ "!";
}
}
String helloWorld = new ByteBuddy()
.redefine(Source.class)
.method(named("hello"))
.intercept(MethodDelegation.to(Target.class))
.make()
.load(getClass().getClassLoader())
.getLoaded()
.newInstance()
.hello("World");
私は例外を次しまったクラスdelegation.Source
:既にロードタイプを注入することはできませんありがとう
Targetクラスの再定義されたメソッドで、Sourceクラスのhello()静的メソッドを再バインドしたい場合、どうしたら元の静的メソッドを呼び出すことができますか?どうもありがとうございます ! –
元のメソッドの前後にコードを追加することができ、条件付きでメソッドをスキップすることができる 'Advice'クラスを見てください。それ以外の場合は、元の実装を保持するためにクラスをリベースすることしかできません。 –
Adviceクラスの使い方の例について知っていますか?ありがとう! –