Bytebuddy:如何在循环中定义字段
Bytebuddy: how to defineField within a loop
我想在运行时从映射 Map <String, Class<?>> properties
添加字段,这样我就可以遍历 properties
的条目来定义动态 class[= 的字段13=]
new ByteBuddy()
.defineField(entry.getKey(), entry.getValue())
只需遍历不可变构建器并在每一步中改变它:
DynamicType.Builder<?> builder = ...
for (Map.Entry<String, Class<?>> entry : properties.entrySet()) {
builder = builder.defineField(entry.getKey(), entry.getClass();
}
请注意构建器是不可变的,您需要在循环体内重新分配它。
@Rafael Winterhalter 其实应该是:
DynamicType.Builder<?> builder = ...
for (Map.Entry<String, Class<?>> entry : properties.entrySet()) {
builder = builder.defineField(entry.getKey(), entry.getValue();
}
但是你的回答给了我正确答案的指导,非常感谢。
我想在运行时从映射 Map <String, Class<?>> properties
添加字段,这样我就可以遍历 properties
的条目来定义动态 class[= 的字段13=]
new ByteBuddy()
.defineField(entry.getKey(), entry.getValue())
只需遍历不可变构建器并在每一步中改变它:
DynamicType.Builder<?> builder = ...
for (Map.Entry<String, Class<?>> entry : properties.entrySet()) {
builder = builder.defineField(entry.getKey(), entry.getClass();
}
请注意构建器是不可变的,您需要在循环体内重新分配它。
@Rafael Winterhalter 其实应该是:
DynamicType.Builder<?> builder = ...
for (Map.Entry<String, Class<?>> entry : properties.entrySet()) {
builder = builder.defineField(entry.getKey(), entry.getValue();
}
但是你的回答给了我正确答案的指导,非常感谢。