使用可变数量的字段创建 类
Create classes with variable number of fields
我想创建一组 classes 具有可变数量的字段。我尝试了什么:
private Class<?> generateClass(String clazzName, Map<String, Class<?>> fields) {
DynamicType.Builder<Object> buddy = new ByteBuddy()
.subclass(Object.class)
.name(clazzName);
fields.forEach((k, v) -> {
buddy.defineField(k, v, Visibility.PRIVATE);
});
return buddy.make().load(ClassLoader.getSystemClassLoader()).getLoaded();
}
其中参数clazzName是class要创建的名字,字段的key代表字段名,value代表字段类型
上述代码的问题在于它创建了 class 但没有任何字段。我错过了什么?
也可以从上面的字段生成 public 吸气剂吗?
Byte Buddy 的 API 是不可变的。您将需要分配字段定义:
buddy = buddy.defineField(k, v, Visibility.PRIVATE);
您基本上是在放弃您立即所做的更改。
我想创建一组 classes 具有可变数量的字段。我尝试了什么:
private Class<?> generateClass(String clazzName, Map<String, Class<?>> fields) {
DynamicType.Builder<Object> buddy = new ByteBuddy()
.subclass(Object.class)
.name(clazzName);
fields.forEach((k, v) -> {
buddy.defineField(k, v, Visibility.PRIVATE);
});
return buddy.make().load(ClassLoader.getSystemClassLoader()).getLoaded();
}
其中参数clazzName是class要创建的名字,字段的key代表字段名,value代表字段类型
上述代码的问题在于它创建了 class 但没有任何字段。我错过了什么?
也可以从上面的字段生成 public 吸气剂吗?
Byte Buddy 的 API 是不可变的。您将需要分配字段定义:
buddy = buddy.defineField(k, v, Visibility.PRIVATE);
您基本上是在放弃您立即所做的更改。