ByteBuddy - 创建getter / setter的接口

时间:2018-03-06 20:20:55

标签: byte-buddy

我试图从List生成一个Intgerface,其中元素表示'get'方法。生成的接口没有Exception,但是当我反思性地尝试获取Dynamic类型的接口的方法时,没有列出任何方法。这似乎应该是一件简单的事情

ByteBuddy bb = new ByteBuddy();
Builder<?> bbb = bb.makeInterface().merge(Visibility.PUBLIC);
for (K name : propertyNames) {
    String get = "get" + name.toString();
    String set = "set" + name.toString();
    bbb.defineMethod(get, String.class, Visibility.PUBLIC); //** .withoutCode()
    bbb.defineMethod(set, String.class, Visibility.PUBLIC).withParameter(String.class); //** .withoutCode()
}
DynamicType.Unloaded unloadedType = bbb.name(NAME).make();
DYNAMIC_TYPE = unloadedType.load(POJOFactory.class.getClassLoader()).getLoaded();

过去一周我搜索了谷歌,寻找与ByteBuddy创建界面的参考资料,但根本没有任何参考资料。

谢谢,

1 个答案:

答案 0 :(得分:0)

Byte Buddy的构建器API是完全不可变的。您必须始终对返回值进行操作。所有来电都是无副作用的,所以:

builder.<something>

无效。正确的方法是:

builder = builder.<something>