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)