- lombok 支持的所有註解
Features
@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger
@Data
@Builder
@Singular
@Delegate
@Value
@Accessors
@Wither
@SneakyThrows
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)
- @Getter 和 @Setter
添加 @Getter
和 @Setter
註解用在 Java Bean 類上面,無需生成 get/ set 方法,會自動生成所有的 get/ set 方法及一個默 認的構造方法
- @ToString
-
使用在類上,默認生成所有非靜態字段以下面的格式輸出,如
public String toString(){
return "Person(userName=" + getUserName() + ", id=" + getId() + ", age=" + getAge() + ", address=" + getAddress() + ", memo=" + getMemo() + ")";
}
- @NoArgsConstructor
用在類上,用來生成一個默認的無參構造方法。
- @RequiredArgsConstructor
用在類上,使用類中所有帶有 @NonNull
註解和 final
類型的字段生成對應的構造方法,會生成一個包含常量,生成的構造方 法是私有的private。
- @AllArgsConstructor
用在類上,生成一個所有參數的構造方法,默認不提供無參構造方法。
- @Data
用在類上,等同於下面這幾個註解合集。
-
@Getter
-
@Setter
-
@RequiredArgsConstructor
-
@ToString
-
@EqualsAndHashCode
- @Value
用在類上,等同於下面這幾個註解合集。
-
@Getter
-
@FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE)
-
@AllArgsConstructor
-
@ToString @EqualsAndHashCode
- @NonNull
用在屬性上,用於字段的非空檢查,如果傳入到 set 方法中的值爲空,則拋出空指針異常,該註解也會生成一個默認的構造方法。
- @Accessors(chain = true)
鏈式用法,如
@Accessors(chain = true)
@Setter
@Getter
public class Student {
private String name;
private int age;
}
使用
Student student = new Student()
.setAge(24)
.setName("zs");
- @RequiredArgsConstructor(staticName = "of") 靜態構造方法
@Accessors(chain = true)
@Setter
@Getter
@RequiredArgsConstructor(staticName = "of")
public class Student {
@NonNull private String name;
private int age;
}
使用
Student student = Student.of("zs").setAge(24);
- @Builder
@Builder
public class Student {
private String name;
private int age;
}
使用
Student student = Student.builder().name("zs").age(24).build();
- @Delegate 代理註解
//以前
public abstract class FilterRestTemplate implements RestOperations {
protected volatile RestTemplate restTemplate;
protected FilterRestTemplate(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@Override
public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables) throws RestClientException {
return restTemplate.getForObject(url,responseType,uriVariables);
}
@Override
public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
return restTemplate.getForObject(url,responseType,uriVariables);
}
@Override
public <T> T getForObject(URI url, Class<T> responseType) throws RestClientException {
return restTemplate.getForObject(url,responseType);
}
@Override
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables) throws RestClientException {
return restTemplate.getForEntity(url,responseType,uriVariables);
}
//其他實現代碼略。。。
}
//lombok 代理註解,對restemplate 進行包裝器模式設計
@AllArgsConstructor
public abstract class FilterRestTemplate implements RestOperations {
@Delegate
protected volatile RestTemplate restTemplate;
}