Java builder 和 new 创建对象时默认值处理方式不一样

@Builder
@NoArgsConstructor
@AllArgsConstructor
public final class ShowStudentInfo  {

    private String name = "default";

    private int age = -1;


    @Override
    public String toString() {
        return "SHOW STUDENT INFO: " + (StringUtils.isNotBlank(name) ? "name = " + name : "")
               + (age > -1 ? ", age = " + age : "");
    }	
}


public static void main(String[] args) {
    // Builder 形式创建 ShowStudentInfo 的实例的 age 居然是 0,不是默认值 -1
    ShowStudentInfo tmp = ShowStudentInfo.builder().name("asdf").build();
    System.out.println(tmp.toString());

    // Builder 形式创建 ShowStudentInfo 的实例的 age 是默认值 -1
    ShowStudentInfo tmp2 = new ShowStudentInfo();
    System.out.println(tmp2.toString());
}

---output----
SHOW STUDENT INFO: name = asdf, age = 0
SHOW STUDENT INFO: name = default
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值