我有一个问题,下面是代码:-
MainService.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"])
非常感谢。谢谢
最佳答案
据我所知,您一定不能像您一样扩展Enum
!唯一允许的方式是public enum ...
。因此,不可能创建抽象枚举基类!
根据您真正想要做的事情,您也许可以使用包含默认方法的接口(interface)来实现相同的目的。枚举可以实现接口(interface)。
关于java - Json反序列化错误Spring Boot测试-无法构造实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54149383/