1. 程式人生 > 其它 >Lombok中@Builder註解的使用

Lombok中@Builder註解的使用

技術標籤:長征路上的坑java

今天看程式碼的時候突然看見一個實體類的builder()方法,寫法類似下面這行程式碼:

@Service("userService")
public class UserServiceImpl implements UserService {
    @Override
    public User getUser(String userName,Integer age){
        return User.builder().userName(userName).age(age).build();
    }
}

這種例項化的方式還是第一次見,於是點進去一看,果然,是Lombok的傑作:

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String userName;
    private Integer age;
}

然後稍微測試了一下:

    @Test
    public void testBuilder(){
        User.
UserBuilder userBuilder = User.builder().age(11).userName("bean"); System.out.println("userBuilder.getClass():"+userBuilder.getClass()); System.out.println("userBuilder:"+userBuilder); User user = userBuilder.build(); System.out.println("user.getClass():"
+user.getClass()); System.out.println("user:"+user); }

測試結果如下:
在這裡插入圖片描述

根據測試結果和參考資料後,瞭解到使用builder()方法會給我們自動建立一個靜態內部類,把屬性先注入在這個靜態內部類中,然後呼叫build()方法之後,把屬性賦給實體類。

第一次見到這種例項化的方式,感覺用這種方式來寫程式碼會簡潔很多,所以記錄一下。