我试图从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创建界面的参考资料,但根本没有任何参考资料。
谢谢,
答案 0 :(得分:0)
Byte Buddy的构建器API是完全不可变的。您必须始终对返回值进行操作。所有来电都是无副作用的,所以:
builder.<something>
无效。正确的方法是:
builder = builder.<something>