Lombok @Builder 是如何實現的

轉:lombok @Builder 是如何實現的

定義 Builder 接口,用於 build 對象:

public interface Builder<T> {
    T build();
}

定義 bean:

import lombok.Getter

@Getter
public class UserFacts {

    private String name;

    private Integer age;

    public static UserFactsBuilder builder() {
        return new UserFactsBuilder();
    }

    public static class UserFactsBuilder implements Builder<UserFacts> {

        private String name;

        /**
         * 可設置默認值
         */
        private Integer age = 18;

        public UserFactsBuilder name(String name) {
            this.name = name;
            return this;
        }

        public UserFactsBuilder age(Integer age) {
            this.age = age;
            return this;
        }

        @Override
        public UserFacts build() {
            return new UserFacts(this);
        }
    }

    private UserFacts(UserFactsBuilder builder) {
        this.name = builder.name;
        this.age = builder.age;
    }
}

測試:

public static void main(String[] args) {
    UserFacts userFacts = UserFacts.builder()
            .name("https")
            .age(18)
            .build();
    System.out.println(userFacts.getName());
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章