使用 Lombok 初始化对象

Initialize objects with Lombok

我有以下对象:

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class MyComplexObject implements Serializable {
        private static final long serialVersionUID = 1L;
        private OuputObject ouput;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class OuputObject implements Serializable {
        private static final long serialVersionUID = 1L;
        private InputObject input;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class InputObject implements Serializable {
        private static final long serialVersionUID = 1L;
        private List<String> example;
    }

实例化对象时,对象未初始化"OuputObject",始终为NULL。为什么OuputObject对象和InputObject对象没有被实例化或初始化?

当我执行 a: getInputObject () 时,我得到一个 NullPointerException

(这​​是一个例子,是假数据)

Lombok 不初始化属性。 注解 @Data 只为 class 属性生成 getterssetters,并覆盖 toStringhashCodeequals 方法。

@Data
public class MyClass {
    private String myString;
}

生成以下代码:

public class MyClass {
    private String myString;

    public String getMyString() {
        return myString;
    }

    public void setMyString(String myString) {
        this.myString = myString;
    }

    // equals, hashcode, toString
}

看看documentation

@Data 创建 getter,setter,@AllArgsConstructor 为所有字段创建构造函数,@NoArgsConstructor 创建默认构造函数。要初始化您的对象,您需要使用构造函数,例如

MyComplexObject mco = new MyComplexObject(new InputObject());