メソッドを定義し、それを(複数回)ByteBuddyでどのように飾ることができますか? これは私が、出力がコードを実行ByteBuddyでメソッドを装飾する
であることを希望...出力は、他のコードを実行する
ある
私の例
Builder<Object> builder = new ByteBuddy().subclass(Object.class).name("Dynamic"); builder = builder.defineMethod("method", void.class, Visibility.PUBLIC) .intercept(MethodDelegation.to(new Object(){ @RuntimeType public void intercept(@This Object o) { System.out.println("Executing code..."); } })); builder = builder.method(ElementMatchers.named("method")). intercept(MethodDelegation.to(new Object(){ @RuntimeType public void intercept(@This Object o) { System.out.println("Executing other code..."); } })); try { Class cls = builder.make() .load(StructClassBuilder.class.getClassLoader()) .getLoaded(); Object obj = cls.newInstance(); cls.getDeclaredMethod("method").invoke(obj, args); } catch (Exception e1) { e1.printStackTrace(); }
..です。
他のコードを実行中...
おかげ
私は制約があります。私は複数回サブクラス化できません。私はインターセプタをデコレートするためにデコレータパターンを使用します。ありがとうございました。 – Marpa
私は参照してください。あなたの答えに対する別の解決策で私の回答を更新しました。 – kaos