簡體   English   中英

Objenesis-如何初始化字段

[英]Objenesis - how to initialize fields

如何使Objenesis初始化字段作為普通的構造函數調用?

這是我的代碼:

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));
    }

輸出為:

{"a":3,"b":"4","c":{}}
{"a":0,"b":null,"c":null}
{"a":0,"b":null,"c":null}

因此,在第二個和第三個輸出中,沒有初始化默認值,這使我在字段c上出現了空指針異常。 另外,字符串和整數字段不會初始化為默認值。

如何使Objenesis初始化這些字段?

Objenesis的目的恰恰是不調用任何構造函數或初始化任何字段。 創建模擬和代理。

您的用例是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM