java - 创建具有可变数量字段的类
问题描述
我想创建一组具有可变数量字段的类。我尝试了什么:
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是要创建的类名,字段的key代表字段名,value代表字段类型。
上面代码的问题是它创建了类但没有任何字段。我错过了什么?
也可以从上面的字段中生成公共吸气剂吗?
解决方案
Byte Buddy 的 API 是不可变的。您将需要分配字段定义:
buddy = buddy.defineField(k, v, Visibility.PRIVATE);
您基本上是立即放弃所做的更改。
推荐阅读
- javascript - AJAX 将更改提交到数据库而不提交
- android - 创建项目时出错 - 'where' 未被识别为内部或外部命令、可运行程序或批处理文件
- matlab - 在数值分析文本中给出的 lsolve 命令的第一行代码后收到解析错误
- r - 如何在 Cosmos DB 上直接或间接执行“分组依据”查询?
- nusmv - NuSMV CTL 规范
- tensorflow - 检查模型目标时出错:您传递给模型的 Numpy 数组列表不是模型预期的大小
- java - JAVA Eclipselink 查询
- java - 在列表中查找前 4 个最常见的对象
- mongodb - 如何向存储在 mongo 集合中的字符串格式存储的所有日期添加年份
- amazon-web-services - Amazon SNS 推送通知 - 单击推送后重定向到 Web url