4
バイトバディを使用してフィールドにセッターを作成するにはどうすればよいですか?推奨される構文は何ですか?バイトバディ - メソッド実装.Context.Defaultはbeanプロパティではありません - セッターを作成します
私はフィールド(私の元の質問here)からゲッターを作成するために管理しますが、セッターを作成するためにdefineMethod
を使用してMethod Implementation.Context.Default
... is no bean property
例外をスローしています。
this質問に設定ツールを作成するための推奨された方法が古くなっているようです。ここで
はバイト仲間のバージョン1.5.4を使用して、私の失敗コードです:
public static void main(String[] args) throws InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException, NoSuchMethodException {
Class<?> type = new ByteBuddy()
.subclass(Object.class)
.name("domain")
.defineField("id", int.class, Visibility.PRIVATE)
.defineMethod("getId", int.class, Visibility.PUBLIC).intercept(FieldAccessor.ofBeanProperty())
.defineMethod("setId", Void.TYPE, Visibility.PUBLIC).intercept(FieldAccessor.ofBeanProperty())
.make()
.load(sample.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
Object o = type.newInstance();
Field f = o.getClass().getDeclaredField("id");
f.setAccessible(true);
System.out.println(o.toString());
Method m = o.getClass().getDeclaredMethod("getId");
System.out.println(m.getName());
Method s = o.getClass().getDeclaredMethod("setId", int.class);
System.out.println(s.getName());
}