Byte Buddy tutorialこの文書の執筆時点では、すべて説明されていますが、後に説明する方法のインターセプターはありません。 (LoggerInterceptorの例ではメソッドが返されますが、オブジェクトはありません。ChangingLoggerInterceptorの例ではオブジェクトが呼び出されますが、メソッドは呼び出されません)シンプル・アンド・イーブン・メソッド・インターセプター・バイト・バディ
私が達成したいのは、setterメソッドの実行後にオブジェクトのメソッドを呼び出すことです。 Java 6でインターセプタを作成して使用するにはどうすればよいですか?次のように
public class DirtyClass{
private String _sField;
private boolean _bDirty;
public void setField(String sField) {
_sField = sField;
//setDirty(true); to be appended after proxying
}
public String getField() {
return _sField;
}
public void setDirty(boolean bDirty){
_bDirty = bDirty;
}
public boolean isDirty(){
return _bDirty;
}
}
DirtyClass d = new ByteBuddy().subclass(DirtyClass.class)...???
d.setField("dirty now");
System.out.println(d.isDirty()); //Expecting true
このようなものhttp://stackoverflow.com/q/37719089/13075? – Henrik
setterインターセプタとして試してみましたが、例外が発生しました:java.lang.IllegalArgumentException:[...]のいずれもpublic voidからの委任を許可していません... –