Property pada bahasa pemrograman Java dash5as4d3a
Property adalah variabel yang dideklarasikan di dalam class sejajar dengan method. Variabel yang berada di dalam method bukan merupakan property, tetapi disebut sebagai local variabel. Layaknya variabel yang lain, property mempunyai tipe data dan nama. Berdasarkan aturan java bean, property akan dibuatkan method getter dan setter untuk membungkus property. Secara umum, disarankan untuk memberikan access modifer private kepada semua property, kalau ingin mengakses property tersebut maka buatlah method getter dan setter. Deklarasi property diawali dengan access modifer kemudian diikuti dengan tipe data dan akhirnya adalah nama dari property. Property bisa langsung diinisialisasi nilainya atau tidak, kalau tidak diberi nilai, maka nilai default yang akan diset sebagai nilai awal property.
Contohnya seperti di bawah ini :
private String stringProperty;
Beberapa keyword lain juga bisa digunakan untuk mendeklarasikan property. Keyword static bisa digunakan untuk mendeklarasikan property, static akan membuat property menjadi milik class bukan milik object. Property static bisa diakses dari nama classnya dan tidak perlu ada object yang diinstansiasi. Karena property static menjadi milik class, maka kalau property static ini diganti isinya maka semua kode yang mengakses property static ini akan melihat nilai
yang sama. Contohnya seperti di bawah ini :
public class PropertyStaticTest {
public static String nilaiStatic;
public static void main(String[] args) {
//property static dipanggil menggunakan nama class
PropertyStaticTest.nilaiStatic = "nilai dari main";
//property static juga bisa dipanggil tanpa nama class dari class yang sama
System.out.println(nilaiStatic);
//method main adalah method static, hanya bisa memanggil method static juga
methodUbahPropertyStatic();
//nilai property static berubah setelah method methodUbahPropertyStatic
//dipanggil
System.out.println(nilaiStatic);
}
public static void methodUbahPropertyStatic() {
PropertyStaticTest.nilaiStatic = "nilai dari methodUbahPropertyStatic";
}
}
Kalau class di atas dicompile dan dijalankan, hasilnya adalah seperti di bawah ini :
$ javac PropertyStaticTest.java
$ java PropertyStaticTest
nilai dari main
nilai dari methodUbahPropertyStatic
$
variabel static bisa sangat berguna untuk memudahkan mengakses suatu variabel karena tinggal menggunakan nama class saja, jadi tidak perlu membawa-bawa nilai variabel ke dalam object yang memerlukanya. Tetapi pada skenario berbeda property static ini malah merepotkan, terutama di lingkungan aplikasi web yang berjalan dalam cluster. Antara satu cluster satu dan cluster yang lain nilai static ini bisa berbeda dan menyebabkan aplikasi menjadi tidak konsisten. Karena dalam buku ini kita tidak bekerja dalam lingkungan cluster, kita
bisa menganggap property static sebagai praktek yang aman. Nantinya di dalam aplikasi contoh,
kita akan cukup banyak menggunakan property static untuk menyederhanakan kode.
Keyword berikutnya yang bisa diletakkan dalam property static adalah fnal. Adanya keyword fnal
dalam deklarasi property menyebabkan property hanya bisa diinisialisasi (diberi nilai) sekali saja,
setelah itu nilainya tidak bisa dirubah, perilaku ini biasa kita sebut dengan konstanta: sekali
diberi nilai tidak bisa berubah nilainya. Kalau kita memaksa merubah nilainya maka akan terjadi
error pada waktu kompilasi atau kalau java compiler tidak sanggup menentukan errornya akan
terjadi pada waktu aplikasi berjalan.
Contohnya kita akan merubah property nilaiStatic di contoh kode sebelumnya dengan
menambahkan keyword fnal, seperti di bawah ini :
public class PropertyStaticFinalTest {
public static final String nilaiStatic;
public static void main(String[] args) {
PropertyStaticFinalTest.nilaiStatic = "nilai dari main";
System.out.println(nilaiStatic);
methodUbahPropertyStatic();
System.out.println(nilaiStatic);
}
public static void methodUbahPropertyStatic() {
PropertyStaticFinalTest.nilaiStatic =
"nilai dari methodUbahPropertyStatic";
}
}
Ketika kode dikompilasi maka akan terjadi error yang menerangkan bahwa “tidak bisa mengubah
nilai variabel yang ditandai dengan fnal”. Outputnya seperti di bawah ini :
$ javac PropertyStaticFinalTest.java
PropertyStaticFinalTest.java:4: cannot assign a value to final variable nilaiStatic
PropertyStaticFinalTest.nilaiStatic = "nilai dari main";
^
PropertyStaticFinalTest.java:10: cannot assign a value to final variable
nilaiStatic
PropertyStaticFinalTest.nilaiStatic =
^
2 errors
$
Jadi kalau begitu kapan property yang ditandai dengan fnal bisa diberi nilai? Pada waktu
mendeklarasikan property. Contoh di bawah ini adalah cara yang benar menginisialisasi nilai ke
property yang ditandai dengan fnal :
public class PropertyFinalTest {
public final String nilaiFinal="inisialisasi";
public static void main(String[] args) {
PropertyFinalTest finalTest = new PropertyFinalTest();
System.out.println(finalTest.nilaiFinal);
}
}
Perhatikan kode di atas, property nilaiFinal langsung diberi nilai pada waktu deklarasi. Karena sekarang property nilaiFinal kita harus membuat object dari class PropertyFinalTest agar bisa mengakses property nilaiFinal, berbeda dengan property yang ditandai static dimana kita bisa langsung mengaksesnya tanpa membuat object. Masih ada keyword lain yang bisa kita letakkan dalam deklarasi property, yaitu volatile. Keyword ini menyebabkan property tidak akan ikut disimpan ketika object diserialize. Proses serialize adalah proses mengubah object ke dalam bentuk yang bisa ditransfer lewat media I/O, misalnya object ini disimpan ke hardisk atau dikirim ke komputer lain lewat jaringan. Proses sebaliknya adalah deserialize dimana dari bentuk ini diubah lagi menjadi bentuk object di dalam JVM.
No comments:
Post a Comment