Lombok中@Builder註解的使用
阿新 • • 發佈:2021-02-06
今天看程式碼的時候突然看見一個實體類的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()方法之後,把屬性賦給實體類。
第一次見到這種例項化的方式,感覺用這種方式來寫程式碼會簡潔很多,所以記錄一下。