首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objenesis -如何初始化字段

Objenesis -如何初始化字段
EN

Stack Overflow用户
提问于 2017-12-19 19:03:07
回答 1查看 138关注 0票数 0

如何使Objenesis将字段初始化为正常的构造函数调用?

下面是我的代码:

代码语言:javascript
复制
public static class MakeThis implements Serializable{
        private int a = 3;
        private String b = "4";
        private HashMap<String, String> c = new HashMap<>();

        public int getA() {
            return a;
        }

        public void setA(int a) {
            this.a = a;
        }

        public String getB() {
            return b;
        }

        public void setB(String b) {
            this.b = b;
        }

        public HashMap<String, String> getC() {
            return c;
        }

        public void setC(HashMap<String, String> c) {
            this.c = c;
        }
    }

    void serialize() throws JsonProcessingException {
        ObjectMapper om = new ObjectMapper();
        MakeThis m = new MakeThis();
        System.out.println(om.writeValueAsString(m));
        MakeThis m2 = new ObjenesisStd().newInstance(MakeThis.class);
        System.out.println(om.writeValueAsString(m2));
        MakeThis m3 = new ObjenesisSerializer().newInstance(MakeThis.class);
        System.out.println(om.writeValueAsString(m3));
    }

输出为:

代码语言:javascript
复制
{"a":3,"b":"4","c":{}}
{"a":0,"b":null,"c":null}
{"a":0,"b":null,"c":null}

因此,在第二和第三个输出中,没有初始化默认值,这给我提供了字段c上的空指针异常。此外,字符串和整数字段也没有初始化为默认值。

如何让Objenesis初始化这些字段?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-22 01:48:07

Objenesis的目的恰恰不是调用任何构造函数或初始化任何字段。创建模拟和代理。

你的用例是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47885518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档