16 Aralık 2018 Pazar

Lombok @ToString Anotasyonu

Giriş
Şu satırı dahil ederiz
import lombok.ToString;
Normalde getter() metodları kullanarak toString kodunu üretir. Yani şöyledir. Eğer alanları direkt kullanmak istersek doNotUseGetters = false yapılır
public String toString() {
  return "Foo(bar=" + this.getBar() + ... ")";
}
Buradaki en önemli sıkıntı eğer alan null ise toString() metodunda bunu görmek. Lombok bunu bir türlü düzeltmedi. Feature request: @ToString allows skipping null-value fields isteği hala açık. 

Böyle bir durum varsa mecburen StringBuilder kullanarak elle yazmak veya IDE ile ürettirmek gerekir.

Örnek
Şöyle yaparız.
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@Validated
public class ParentPojo<T> implements Serializable{
    @NotNull
    private String  cNumber;
    @NotNull
     private String  statusCode;
     @NotNull T child;
}
callSuper Alanı
Eğer sınıfın atası varsa onun da toString() metodunun çağrılmasını sağlar

doNotUseGetters Alanı
String oluşturmak için direkt üye alan veya getter() metodu kullanabilir. Hangisini istediğimizi belirtiriz. Varsayılan yöntem getter() metodun kullanılması

Hiç yorum yok:

Yorum Gönder