我正在尝试正确保存/加载包含通用枚举的数据。当前,该对象包含一个java.lang.Class对象(clazz),该对象被序列化到字段“classclass”中。“al”字段包含枚举的值。我的目标是创建一个自定义的Jackson验证器,它使用“瓦尔”字段和“类”字段,然后运行Enum.valueOf()
来创建Enum的示例。
但是,当我运行解析器时,它抛出一个JsonMappingException
,并显示Cannot construct instance of 'java.lang.Class', problem: me.ExampleProject.Enums$RevealType$1
我似乎不能过去这一个问题,不知道如何进行。如果你能帮忙的话,我将不胜感激。
JSON示例:
"revealType": {
"type": "enumspec",
"id": "Reveal Type",
"val": "SKIRT",
"enumclass": "me.ExampleProject.Enums.RevealType",
"ro": false,
"sec": "Miscellaneous"
}
验证码:
Class clazz = MAP.convertValue(jsonNode.get("enumclass"), new TypeReference<Class<? extends Enum<?>>>() {});
Enum<?> value = Enum.valueOf(clazz, jsonNode.get("val").asText());
1条答案
按热度按时间pdkcd3nj1#
Jorn的评论
读取String格式的类,然后使用
Class.forName
对我很有效。
ClassNotFoundException
的问题是由于我使用PF4J加载插件。我必须注册一个所有插件类加载器的列表,并使用方法Class.forName(name, true, pluginClassLoader)
手动传递插件类加载器来查找类。