Java Lombok
Java Lombok merupakan library java yg digunakan untuk mengurangi penulisan boilerplate, seperti getter, setter, contructor, toString, hashCode dan lain sebagainya, dengan menggunakan anotasi. berikut beberapa anotasi Lombok yang sering digunakan.
Daftar Isi
@Getter
anotasi @Getter
digunakan untuk membuat getter dari properties yang ada di class.
package com.codingduluaja.latihan;
import lombok.Getter;
@Getter
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
}
hasil compile class tersebut jika di decompile hasilnya seperti dibawah ini.
// Source code is decompiled from a .class file using FernFlower decompiler.
package com.codingduluaja.latihan;
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
public Pekerja() {
}
public String getNIP() {
return this.NIP;
}
public String getNama() {
return this.nama;
}
public String getJabatan() {
return this.jabatan;
}
}
@Setter
anotasi @Setter digunakan untuk membuat setter dari properties yg ada di class.
package com.codingduluaja.latihan;
import lombok.Setter;
@Setter
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
}
hasil compile class tersebut jika di decompile hasilnya seperti dibawah ini.
package com.codingduluaja.latihan;
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
public void setNIP(String NIP) {
this.NIP = NIP;
}
public void setNama(String nama) {
this.nama = nama;
}
public void setJabatan(String jabatan) {
this.jabatan = jabatan;
}
}
@RequiredArgsConstructor
anotasi @RequiredArgsConstructor digunakan untuk membuat contructor dengan properties mandatory, atau ditandai dengan kata kunci final.
package com.codingduluaja.latihan;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
private final String tanggalLahir;
}
hasil compile class tersebut jika di decompile hasilnya seperti dibawah ini.
package com.codingduluaja.latihan;
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
private final String tanggalLahir;
public Pekerja(String tanggalLahir) {
this.tanggalLahir = tanggalLahir;
}
}
@AllArgsConstructor
anotasi @AllArgsConstructor digunakan untuk membuat contructor dengan semua properties class.
package com.codingduluaja.latihan;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
}
hasil compile class tersebut jika di decompile hasilnya seperti dibawah ini.
package com.codingduluaja.latihan;
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
public Pekerja(String NIP, String nama, String jabatan) {
this.NIP = NIP;
this.nama = nama;
this.jabatan = jabatan;
}
}
@NoArgsConstructor
anotasi @NoArgsConstructor digunakan untuk membuat contructor kosong.
package com.codingduluaja.latihan;
import lombok.NoArgsConstructor;
@NoArgsConstructor
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
public Pekerja(String nIP) {
NIP = nIP;
}
}
hasil compile class tersebut jika di decompile hasilnya seperti dibawah ini.
package com.codingduluaja.latihan;
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
public Pekerja(String nIP) {
this.NIP = nIP;
}
public Pekerja() {
}
}
@ToString
anotasi @ToString digunakan untuk membuat metode toString().
package com.codingduluaja.latihan;
import lombok.ToString;
@ToString
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
}
hasil compile class tersebut jika di decompile hasilnya seperti dibawah ini.
package com.codingduluaja.latihan;
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
public String toString() {
return "Pekerja(NIP=" + this.NIP + ", nama=" + this.nama + ", jabatan=" + this.jabatan + ")";
}
}
@Data
anotasi terakhir yg paling sering digunakan adalah anotasi @Data, anotasi ini merupakan penggabungan dari anotasi, @Getter, @Setter, @ToString, @EqualsAndHashCode dan @RequiredArgsConstructor.
package com.codingduluaja.latihan;
import lombok.Data;
@Data
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
}
hasil compile class tersebut jika di decompile hasilnya seperti dibawah ini.
package com.codingduluaja.latihan;
public class Pekerja {
private String NIP;
private String nama;
private String jabatan;
public String getNIP() {
return this.NIP;
}
public String getNama() {
return this.nama;
}
public String getJabatan() {
return this.jabatan;
}
public void setNIP(String NIP) {
this.NIP = NIP;
}
public void setNama(String nama) {
this.nama = nama;
}
public void setJabatan(String jabatan) {
this.jabatan = jabatan;
}
public boolean equals(Object o) {
if (o == this) {
return true;
} else if (!(o instanceof Pekerja)) {
return false;
} else {
Pekerja other = (Pekerja) o;
if (!other.canEqual(this)) {
return false;
} else {
label47: {
Object this$NIP = this.getNIP();
Object other$NIP = other.getNIP();
if (this$NIP == null) {
if (other$NIP == null) {
break label47;
}
} else if (this$NIP.equals(other$NIP)) {
break label47;
}
return false;
}
Object this$nama = this.getNama();
Object other$nama = other.getNama();
if (this$nama == null) {
if (other$nama != null) {
return false;
}
} else if (!this$nama.equals(other$nama)) {
return false;
}
Object this$jabatan = this.getJabatan();
Object other$jabatan = other.getJabatan();
if (this$jabatan == null) {
if (other$jabatan != null) {
return false;
}
} else if (!this$jabatan.equals(other$jabatan)) {
return false;
}
return true;
}
}
}
protected boolean canEqual(Object other) {
return other instanceof Pekerja;
}
public int hashCode() {
int PRIME = true;
int result = 1;
Object $NIP = this.getNIP();
int result = result * 59 + ($NIP == null ? 43 : $NIP.hashCode());
Object $nama = this.getNama();
result = result * 59 + ($nama == null ? 43 : $nama.hashCode());
Object $jabatan = this.getJabatan();
result = result * 59 + ($jabatan == null ? 43 : $jabatan.hashCode());
return result;
}
public String toString() {
String var10000 = this.getNIP();
return "Pekerja(NIP=" + var10000 + ", nama=" + this.getNama() + ", jabatan=" + this.getJabatan() + ")";
}
}
Kesimpulan
Anotasi Lombok memang dapat mempermudah dan mengurangi boilerplate dalam code yang kita ketik, namum perlu diperhatikan agar menggunakan anotasi sesuai dengan keperluan.