[pravega-011] pravega源码分析--Controller子项目--lombok的builder注解

1.Server.java大量使用lombok的Buider注解。Builder注解,为类提供构造函数,且让类的属性只能获取不能设置--等价于只有Getter注解的意思,如果在Builder注解增加toBuilder=true,又可以根据原对象的某些属性创建一个新对象。

2.以一个project进行说明。项目文件目录结构如下:

.
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
    ├── main
    │   ├── java
    │   │   ├── Book.java
    │   │   └── Main.java
    │   └── resources
    └── test
        ├── java
        └── resources


3. Book.java源码如下:

import lombok.Builder;
import lombok.Getter;
import lombok.ToString;

import java.util.UUID;

@ToString
@Getter
public class Book {
    private String name;
    private Integer price;
    //每个对象唯一标识符号
    private String ojbid;

    //如果没有boBuilder=true,或者toBuilder=false创建后不能修改属性
    @Builder(toBuilder = true)
    Book(String name, Integer price){
        this.name = name;
        this.price = price;
        this.ojbid = UUID.randomUUID().toString().replace("-", "");
    }
}

4.Main.java源码如下:

public class Main {
    public static void main(String[] args){
        System.out.println("Hi,builder");

        Book book1 = Book.builder()
                .name("hiworld")
                .price(15)
                .build();
        System.out.println(book1.toString());


        Book book2 = book1.toBuilder()
                .name("himodify")
                .price(20)
                .build();

        System.out.println(book1.toString());
        System.out.println(book2.toString());
    }
}

5.build.gradle内容如下:

group 'com.brian.demo.lombok.builder'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile("org.projectlombok:lombok:1.18.2")
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

6.运行结果:

Hi,builder
Book(name=hiworld, price=15, ojbid=e96b0ebf2b3240839996a31540488784)
Book(name=hiworld, price=15, ojbid=e96b0ebf2b3240839996a31540488784)
Book(name=himodify, price=20, ojbid=f446e7e7365f4e1fa2e333766e058837)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值