为了账号安全,请及时绑定邮箱和手机立即绑定

GWT-Jackson-APT 无法猜测类名

GWT-Jackson-APT 无法猜测类名

莫回无 2022-06-15 16:40:39
在将其余部分全部使用样本之后,我绑定到序列化我的实际底层对象,并发现它总是会返回一个错误,即无法猜测我正在尝试序列化的类。这是我正在尝试做的高度简化的示例,以及对我来说似乎对如何做有意义的注释。我想序列化原始(或盒装原始)对象的 List<>,在本例中为一个 int 和一个字符串。我的实际类也是所有原始(或盒装原始)类型。@JSONMapperpublic 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;    }}@JSONMapperpublic static class test{    public static test_MapperImpl MAPPER = new test_MapperImpl();    int x;    String y;    test(int X,String Y){        x = X;        y = Y;    }}但我得到的错误是:错误:java:创建源文件时出错 java.lang.IllegalArgumentException:无法猜测 client.myEnclosureClass.test
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

问题中的代码有两个不允许编译的问题:


首先测试类应该命名为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 做了一些假设并使用一些约定来生成底层的序列化器/反序列化器。


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号