java - Json反序列化错误Spring Boot测试 - 无法构造实例
问题描述
我有一个问题,下面是代码:-
主服务.java
public void someMethod(Message message){
A aObj = new A (someEnumClass.enumValue, message)
someService.saveData(aObj)
}
public Class A extends B {
int x,y,z;
A(SomeEnumClass enumValue,int c){
super(enumValue);
}
Public abstract class B<EnumClass extends Enum<EnumClass>>{
private EnumClass enumValue
}
现在上面的代码工作:
但是当我使用下面的课程进行测试时
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class MyDemoTests {
@Autowired
private SomeService someService;
@Autowired
private someRepo repository;
@Test
public void testMyservice() throws Exception {
List<A> results = repository.findAll();
assertThat(results).containsAll(all);
}
我在“结果”上收到以下错误:-
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.lang.Enum` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: (InputStreamReader); line: 1, column: 123] (through reference chain: com.example.A["enumValue"])
非常感激。谢谢
解决方案
AFAIK,你不能Enum
像你一样扩展!唯一允许的方式是public enum ...
. 因此,不可能创建抽象枚举基类!
根据您真正想做的事情,您也许可以使用包含默认方法的接口来实现相同的目的。枚举可以实现接口。
推荐阅读
- reactjs - Datepicker - RangeError:无效的时间值
- svg - 有没有办法将蒙版或剪辑应用/烘焙到 svg,让您有一条路径?
- python - 用图像注释 Pandas 条形图
- python - 如何在满足条件之前留在 for 循环的元素中?
- python - 如果当前日期在列中,则显示行
- ruby - 散列中“传播”总和的算法
- java - 如何使用 lambda 表达式在辅助类中包装异常处理
- ms-office - 使用安装程序部署 office (web) 加载项
- java - Java - Uber jar (Maven Shaded) 无法将资源视为 URL
- sql - 如何在不使用子查询的情况下从 oracle 函数中提取年或月、日?