今天看代码的时候突然看见一个实体类的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()方法之后,把属性赋给实体类。
第一次见到这种实例化的方式,感觉用这种方式来写代码会简洁很多,所以记录一下。