Static Field and Method
Info
Semua file yang ada pada contoh pada catatan ini ada pada package Ch4/J4_4_Static_Field_And_Method
Semua sample diatas yang ada pada catatan ini, semua method main menggunakan modifier static
Static Fields
Jika kita mendefinisikan field sebagai static
, maka field tersebut tidak akan bisa diakses dari objek dari class yang bersangkutan. Karena static
field tersebut dimiliki oleh class, bukan instance dari class tersebut.
Lanjutan dari class Employee, katakan setiap karyawan harus memiliki ID
yang berbeda-beda dengan karyawan lainya. Katakan, kita tetapkan ID karyawan adalah nomor urut dari karyawan yang pertama menjadi anggota perusahaan tersebut dan seterusnya. Kita dapat memanfaatkan static
field dimana field tersebut akan berbagi dengan instance objek dari class Employee sehingga kita dapat menaruh increment logic setiap objek Employee dibuat.
Code
package Ch4.J4_4_Static_Field_And_Method;
public class J_1_Static_Fields {
public static void main(String[] args) {
Employee[] employee = new Employee[5];
employee[0] = new Employee("Farras");
employee[1] = new Employee("Tania");
employee[2] = new Employee("Faris");
employee[3] = new Employee("Noah");
employee[4] = new Employee("Hilyah");
for (Employee data: employee){
System.out.println(data);
System.out.println("-----");
}
}
}
class Employee{
private static int id = 0;
private int idKaryawan;
private String name;
public Employee(String name){
// Increment id
id++;
this.idKaryawan = id;
this.name = name;
}
@Override
public String toString() {
return "Id \t\t: %d\nName \t: %s".formatted(this.idKaryawan, this.name);
}
}
Static Constant
Static Fields jarang ditemukan atau dipakai. Namun static constant lebih sering ditemukan. Sebagai contoh kita ingin membuat sebuah static field/properties yang nilainya tidak dapat di-reassign.
Code
Sebagaimana yang telah kita lihat pada catatan diatas, sangat tidak disarankan membuat filed sebagai public
. Namun untuk Static Contant tidak mengapa, karena kita juga menetapkan modifier menjadi final
dimana nilai field tersebut tidak akan bisa di ganti.
Static Method
Static method adalah method yang tidak dapat beroperasi pada sebuah Object, namun langsung pada classny. Contoh adalah operasi matematika yang ada pada class Math
.
- Gunakan static method ketika kita tidak butuh akses ke properties dari objek karena semua yang dibutuhkan diambil dari paramater dari static metod.
- Ketika mtehod hanya membutuhkan akses ke static fields dari class.
Factory Method
Factory method adalah salah satu fungsi dari static method
. Class seperti LocalDate
dan NumberFormat
menggunakan static facotry methods utuk membangun object. Pada catatan sebelumnya kita telah menggunakan factory method untuk membuat object LocalDate. Dibawah ini kita akan membuat class yang memiliki Factory Method untuk membuat object.
Code
package Ch4.J4_4_Static_Field_And_Method;
public class J_3_Factory_Method {
public static void main(String[] args) {
var logs = SystemMessage.forStand("This is log");
var secondLogs = SystemMessage.forStandLower("This is log");
System.out.println(logs.getSysLog());
System.out.println(secondLogs.getSysLog());
}
}
class SystemMessage{
private String source;
private String sysLog;
private SystemMessage(String source, String message){
this.sysLog = message;
this.source = source;
}
public static SystemMessage forStand (String message){
return new SystemMessage("From forStand()",message);
}
public static SystemMessage forStandLower(String message){
return forStand(message.toLowerCase());
}
public String getSysLog() {
return sysLog;
}
}