【问题标题】:Json Deserialization Error Spring Boot Testing - Cannot construct the instanceJson反序列化错误Spring Boot测试 - 无法构造实例
【发布时间】:2019-01-11 15:23:05
【问题描述】:

我有一个问题,下面是代码:-

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"])

非常感谢。谢谢

【问题讨论】:

  • 什么是oprsaved1 是什么? saved1.getI() 返回什么?怎么会有人回答这个问题?

标签: java json spring spring-boot spring-cloud-stream


【解决方案1】:

AFAIK,你不能像你一样扩展Enum!唯一允许的方式是public enum ...。因此不可能创建抽象枚举基类!

根据您真正想做的事情,您也许可以使用包含默认方法的接口来实现相同的目的。枚举可以实现接口。

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 2019-10-16
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2019-11-25
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多