Langsung ke konten utama

Tutorial Java OOP: Mengenal Class Anonymous di Java

Tutorial Java OOP: Mengenal Class Anonymous di Java


 
Apa yang kamu pikirkan saat mendengar kata anonymous?
“Sekelompok hacker yang bersembunyi di balik topeng”
Anonymous Indonesia
Haha 😄, bukan ini yang akan kita bahas.
Pada tutorial ini, kita akan belajar tentang anonymous class di Java. Mulai dari pengenalan dan alasan mengapa harus menggunakan class anonymous, hingga contoh programnya.
Class ini mungkin jarang kamu gunakan, atau mungkin sudah pernah kamu gunakan tapi tak sadar itu adalah anonymous class.
Karena itu, mari kita bahas…

Apa itu Class Anonymous?

Class Anonymous adalah class yang tidak memiliki nama. Biasanya dibuat hanya untuk sekali pakai saja. Pada dasarnya class anonymous sama seperti class biasa. 1
Yang membedakan adalah tujuan ia dibuat.
Biasanya class anonymous dibuat untuk mengimplementasikan interface dan class abstrak secara langsung.
Mengenal Class Anonymous di Java
Class Anonymous mulai ditambahkan pada JDK versi 8. Jadi, buat kamu yang menggunakan JDK versi di bawah 8, maka class anonymous tidak akan bisa digunakan di sana.

Mengapa Harus Menggunakan Class Anonymous?

Anonymous class biasanya kita butuhkan saat tidak ingin membuat implementasi dari interface dan class abstrak dalam file Java yang berbeda.
Kita ingin.. implementasinya langsung di dalam kode yang sedang ditulis.
Misalnya gini:
(kita pakai contoh kasus)
Kita mau pakai sebuah tombol dan tombol tersebut punya interfece bernama Clickable yang akan meng-handle bagaimana tombol itu diklik.
// ini interface yang akan menangani klik pada tombol
interface Clickable {
  void onClick();
  void onHover();
}


// dan ini class Tombol
class Button {
  void setClickAction(Clickable event){
    event.onClick();
  }
}
Biasanya kita akan melakukan implementasi seperti ini:
class SubmitPost implements Clickable {
  // kode implementasi di sini
}
Lalu membuat objek tombol pada main method:
Button btn = new Button();
Clickable submitAction = new SubmitPost();
btn.setClickAction(submitAction);
Nah ini sebenarnya bisa kita buat lebih sederhana dengan Class Anonymous.
Button btn = new Button();
Clickable submitAction = new SubmitPost();

// menggunakan class anonymous untuk implementasi interface
btn.setClickAction(new Clickable(){
  // kode implementasi di sini
});
Jadinya kita tidak perlu lagi membuat class SubmitPost atau implementasi dari interface Clickable, karena sudah dibuat dengan class anonymous.
Sudah paham kan mengapa harus pakai class anonymous?
Biasanya kamu akan menemui kasus ini saat ngoding Android dan Java FX.
Baik, kalau begitu mari kita bahas lebih dalam tentang cara membuat dan menggunakan class anonymous.

Cara Membuat Class Anonymous

Class anounymous bersifat seperti ekspresi, ia dapat dibuat seperti membuat variabel.
Berikut ini cara membuat class anonymous:
Membuat class anonymous di Java
Tungu dulu!
Tadi katanya class anonymous itu tidak memiliki nama..
Tapi kok ini ada nama?
Class anonymous memang tidak memiliki nama, namun dalam pembuatannya ia akan menggunakan nama dari Interface atau class abstrak yang ia implementasikan.
Kalau nggak begitu, terus bagaimana kita tahu interface atau class abstrak yang mana yang akan dia implementasikan.
Class anonymous dapat kita buat di beberapa tempat:
  • Fields (pada properti)
    Contoh:
  • Di dalam method (parameter dan body)
    Contoh:
  • Instance initializers (seperti gambar di atas)
    Contoh:
  • Local classes (di dalam inner class)
    Contoh:
Oh iya, class anonymous tidak boleh memiliki konstruktor.
Oke, sekrang mari kita coba contohnya di dalam program.

Contoh Program dengan Class Anonymous

Silahkan buka Netbeans, lalu buatlah proyek baru dengan nama ClassAnonymous.
Membuat proyek baru di Netbeans
Setelah itu, buat sebuah interface baru pada pacakage <default package> dengan nama Clickable dan isi kodenya seperti ini:
interface Clickable {
    void onClick();
}
Setelah itu, buatlah class Button dengan isi seperti ini:
public class Button {
    private Clickable action;
    
    void setClickAction(Clickable action){
        this.action = action;
    }
    
    void doClick(){
        action.onClick();
    }
}
Terakhir, buatlah class Main dengan isi seperti ini:
public class Main {

    public static void main(String[] args) {
        
        Button btn = new Button();
        
        // membuat class anonymous untuk implementasi interface
        btn.setClickAction(new Clickable() {
            @Override
            public void onClick() {
                System.out.println("Tombol sudah diklik!");
                System.out.println("Yay!");
            }
        });
        
        // mencoba klik tombol
        btn.doClick();
        
    }
}
Semuanya sudah siap, sekarang coba jalankan programnya.
Maka hasilnya:
Hasil contoh program anonymous class

Akses Variabel di Anonymous Class

Salah satu keuntungan saat kita menggunakan anonymous class adalah bisa mengakses variabel yang ada di dalam class tempat class anonymous itu dibaut.
Contoh, sekarang coba ubah kode yang ada di class Main menjadi seperti ini:
public class Main {
    
    // membuat variabel di dalam class
    static String title = "Tutorial Anonymous Class";

    public static void main(String[] args) {
        
        // membuat variabel di dalam method main
        String name = "Petani Kode";
        
        Button btn = new Button();
        
        // membuat class anonymous untuk implemen interface
        btn.setClickAction(new Clickable() {
            // membuat variabel di dalam class anonymous
            String message = "belajar Anonymous Class di Java";
            
            @Override
            public void onClick() {
                System.out.println("Tombol sudah diklik!");
                System.out.println("Yay!");
                // mengakses variabel
                System.out.println("Hello " + name);
                System.out.println(title);
                System.out.println(message);
            }

        });
        
        // mencoba klik tombol
        btn.doClick();
        
    }
}
Hasilnya:
Hasil contoh program anonymous class
Semua variabel yang kita buat bisa diakses dari dalam anonymous class. Hebat kan!
Tapi class anonymous juga punya batasan, yakni kita tidak bisa mendeklarasikan member interface dan variabel static di dalamnya.
Static variabel di anonymous class

Menggunakan Anonymous Objek

Kalau ada class anonymous, pasti juga akan ada objek anonymous.
Objek anonymous adalah objek yang tak memiliki nama dan dia juga biasanya digunakan hanya untuk sekali pakai saja.
Sebenarnya pada contoh di atas, kita sudah menggunakan objek anonymous sebagap parameter pada method setActionClick().
// jika tidak menggunakan anonymous objek
// maka kita harus bikin instance baru dari anonymous class
Clickable clickAction = new Clickable() {
  // kode implementasi di sini
}

// baru setelah itu dipakai menjadi partameter
btn.setClickAction(clickAction);

// Tapi jika menggunakan anonymous objek,
// kita tak perlu bikin objek baru.
// langsung saja ditulis seperti ini

btn.setClickAction(new Clickable(){
  // kode implementasi di sini
});
Kita juga dapat menggunakan class anonymous secara langsung tanpa harus membuat objek baru.
Contohnya:
interface Talkable{
  void sayHello();
}

// implementasi dan langsung digunakan
new Talkable(){

  @override
  void sayHello(){
    System.out.println("Hello World!");
  }

}.sayHello(); 
// ^ karena ini anonymous objek, 
//   jadi kita bisa langsung panggil methodnya
Jadi dengan kata kunci new, kita akan bisa membuat anonymous objek.
Oh iya, anonymous objek tidak hanya untuk class anonymous saja. Dia juga bisa dipakai untuk class biasa.
Contoh:
// membuat class biasa
class Hello {
  void saySomething(){
    System.out.println("Something..");
  }
}

// menggunakan class Hello untuk membuat anonymous objek
new Hello().saySomething();

Apa Selanjutnya?

Menurut saya, class anonymous sangat membantu saat kita butuh implementasi langsung dari interface dan class abstrak. Ini akan menghemat waktu kita. Karena tidak perlu bikin class baru lagi secara terpisah.
Selain itu, kode program kita juga akan terlihat lebih bersih dan mudah terbaca.
Terimakasih class anonymous 🙏
Selenjutnya silahkan coba juga latihan mengimplementasikan class abstrak dengan class anonymous.
Oh iya, Java punya satu lagi hal yang berbau ‘anonymous’, yakni anonymous function atau dikenal juga dengan lambda expression.

Komentar

Postingan populer dari blog ini

PROSEDUR PEMBUATAN INDIKATOR

PROSEDUR PEMBUATAN INDIKATOR 1. EBT (ERIOCROM BLACK T) Timbang 100 mg serbuk zat warna EBT ,10 gram Kristal NaCl atau Kristal Na2SO4 an hidrat. Kedua zat tersebut dicampur dengan cara menggerus didalam mortar sampai halus dan merata. Penggunaannya 100 mg (seujung spatel ) untuk satu kali titrasi. 2. Merah metil Larutkan 25 mg metil P dengan 0,95 ml larutan Natrium hidroksida 0,05 N dan 5 ml etanol 95 % setelah larut sempurna, tambahkan etanol 50 % secukupnya hingga 250,0 ml 3. Jingga metil Larutkan jingga metil P 0,04 % b/v dalam etanol 20 % 4. BTB Larutkan 100 mg biru brom timol P dengan 3,2 ml Natrium Hidroksida 0,05 N dan 5 ml etanol 90 % ,setelah larut sempurna tambahkan etanol 20 % secukupnya hingga 250,0 ml. 5. MUREXIDE Haluskan 100 mg serbuk murexide dengan 10 gram KNO3 atau 10 gram NaCl . Pada pemakaiannya 100 gram serbuk murexide tiap volume 150 sampai 200 ml. 6. Larutan indicator Fenolftalein 0,035 %. Timbang ± 0,035 gram Fenolftalein ,lar

LARUTAN PADA KIMIA ANALITIK KUANTITATIF

LARUTAN PADA KIMIA ANALITIK KUANTITATIF 1.        LARUTAN NaOH 0,1  N                 4 gram NaOH dalam 1 Liter 2.        LARUTAN HCl 0,1 N HCl pekat = 37% HCl pekat = 12 M = 12 N                 8,33 mL HCl pekat = 1 Liter 0,1 N 3.        LARUTAN H 2 SO 4 0,1 N H 2 SO 4 pekat = 96 % H 2 SO 4 pekat = 17,63 M = 18 M = 36 N        2,78 mL H 2 SO 4 pekat = 1 liter 0,1 N 4.        LARUTAN CH 3 COOH 0,1 N CH 3 COOH pekat = 99,5 % CH 3 COOH pekat = 17 M = 17 N        5,88 mL CH 3 COOHpekat = 1 liter 0,1 N 5.        LARUTAN Na 2 S 2 O 3 0,1 N             26 gram Na 2 S 2 O 3 dengan 0,2   g Na 2 CO 3 dilarutkan dalam air bebas CO 2 segar sampai volume 1000 ml 6.        LARUTAN KIO 3 0,1 N             3 , 5 g KIO 3 encerkan dengan air hingga 1000 m L 7.        LARUTAN KMnO 4 0,1 N      3,3 gram Kalium Permanganat P adat dilarutkan dalan air hingga 1000 ml 8.        LARUTAN IODIUM (I 2 ) 0,1 N 12,69 gram I 2 P adat ke dalam la

C++ #03 Mengenal Fungsi Input dan Output

Belajar C++ #03: Mengenal Fungsi Input dan Output pada C++ #  C++ Pada dasarnya, program komputer hanya terdiri dari tiga bagian: Input  adalah sesuatu data yang kita masukan ke dalam program. Input biasanya diambil dari perangakat inputan seperti keyboard, mouse, kamera, microphone, dll. Proses  adalah langkah-langkah yang harus dilakukan program untuk menghasilkan output. Output  adalah informasi yang dihasilkan setelah dilakukan proses. Output biasanya ditampilkan ke layar komputer. Pada bahasa pemrograman C++, terdapat beberapa fungsi dasar untuk menampilkan output dan mengambil input. Apa saja itu? Mari kita bahas… Fungsi Output pada C++ C++ memiliki empat fungsi dasar untuk menampilkan output: cout  untuk menampilkan teks ke layar; cerr  untuk menampilkan error; clog  untuk menampilkan log; printf()  untuk menampilkan output, fungsi ini dari C; Kita akan fokus memabahas yang dua saja, yakni  cout  dan  printf() . Soalnya  cerr  dan  clog