gpt4 book ai didi

java - GWT-Jackson-APT 无法猜测类名

转载 作者:行者123 更新时间:2023-12-02 01:39:27 24 4
gpt4 key购买 nike

在使用示例完成其余部分之后,我绑定(bind)了序列化我的实际底层对象,并发现它总是会返回一个关于无法猜测我正在尝试序列化的类的错误。这是我正在尝试做的事情的高度简化的示例,以及对我来说似乎对如何做有意义的注释。

我想序列化原始(或装箱原始)对象的 List<>,在本例中是一个 int 和一个 string。我的实际类也是所有原始(或盒装原始)类型。

@JSONMapper
public static interface TestMapper extends ObjectMapper<TestElmt>{
TestMapper INSTANCE = new Webworkers_TestMapperImpl();
}

public static class TestElmt {

List<test> inerVar = new ArrayList<>();

public void addElement(test elmt){
inerVar.add(elmt);
}
public List<test> getElements(){
return inerVar;
}

}

@JSONMapper
public static class test{

public static test_MapperImpl MAPPER = new test_MapperImpl();

int x;
String y;

test(int X,String Y){
x = X;
y = Y;
}
}

但是我得到的错误是:

Error:java: error while creating source file java.lang.IllegalArgumentException: couldn't make a guess for client.myEnclosingClass.test

最佳答案

问题中的代码有两个问题导致无法编译:

首先,测试类应命名为 Test - 大写 T - 而不是 test - 小写 t -。

其次,类测试中应该有一个无参数构造函数,否则反序列化器将不知道如何创建该类的新实例,它将生成,但在其 create 中会出现编译错误方法。

如果我们像这样更改测试类,一切都应该有效

@JSONMapper
public static class Test {

public static Test_MapperImpl MAPPER = new Test_MapperImpl();

int x;
String y;

public Test() {
}

Test(int X, String Y){
x = X;
y = Y;
}
}

这是因为 gwt-jackson-apt 做了一些假设并使用一些约定来生成底层序列化器/反序列化器。

关于java - GWT-Jackson-APT 无法猜测类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54656706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com