Parameter Default Java Menggunakan Metode Overloading

1. Ikhtisar

Dalam tutorial singkat ini, kami akan mendemonstrasikan penggunaan metode overloading untuk mensimulasikan parameter default di Java.

Di sini, kami mengatakan simulasikan karena tidak seperti bahasa OOP tertentu lainnya (seperti C ++ dan Scala), spesifikasi Java tidak mendukung penetapan nilai default ke parameter metode .

2. Contoh

Sebagai contoh, mari kita buat teh! Pertama, kita membutuhkan Tea POJO:

public class Tea { static final int DEFAULT_TEA_POWDER = 1; private String name; private int milk; private boolean herbs; private int sugar; private int teaPowder; // standard getters } 

Di sini, nama harus diisi, karena Teh kami setidaknya harus memiliki nama.

Kemudian, tidak mungkin ada teh tanpa bubuk teh. Jadi, kami akan berasumsi bahwa pengguna menginginkan 1 sdm bubuk teh standar dalam teh mereka, jika tidak tersedia pada waktu pemanggilan. Ini kemudian adalah parameter default pertama kami .

Parameter opsional lainnya adalah susu (dalam ml), herba (ditambahkan atau tidak ditambahkan), dan gula (dalam sdm). Jika salah satu nilainya tidak diberikan, kami menganggap pengguna tidak menginginkannya.

Mari kita lihat bagaimana mencapai ini di Java menggunakan metode overloading :

public Tea(String name, int milk, boolean herbs, int sugar, int teaPowder) { this.name = name; this.milk = milk; this.herbs = herbs; this.sugar = sugar; this.teaPowder = teaPowder; } public Tea(String name, int milk, boolean herbs, int sugar) { this(name, milk, herbs, sugar, DEFAULT_TEA_POWDER); } public Tea(String name, int milk, boolean herbs) { this(name, milk, herbs, 0); } public Tea(String name, int milk) { this(name, milk, false); } public Tea(String name) { this(name, 0); }

Sebagai bukti, di sini kami menggunakan rangkaian konstruktor, suatu bentuk pemuatan berlebih untuk menyediakan parameter metode dengan beberapa nilai default.

Sekarang mari tambahkan tes sederhana untuk melihat ini beraksi:

@Test public void whenTeaWithOnlyName_thenCreateDefaultTea() { Tea blackTea = new Tea("Black Tea"); assertThat(blackTea.getName()).isEqualTo("Black Tea"); assertThat(blackTea.getMilk()).isEqualTo(0); assertThat(blackTea.isHerbs()).isFalse(); assertThat(blackTea.getSugar()).isEqualTo(0); assertThat(blackTea.getTeaPowder()).isEqualTo(Tea.DEFAULT_TEA_POWDER); }

3. Alternatif

Ada cara lain untuk mencapai simulasi parameter default di Java. Beberapa dari mereka adalah:

  • menggunakan pola Builder
  • menggunakan Opsional
  • Mengizinkan null sebagai argumen metode

Inilah cara kita dapat menggunakan cara ketiga untuk mengizinkan argumen null dalam contoh kita:

public Tea(String name, Integer milk, Boolean herbs, Integer sugar, Integer teaPowder) { this.name = name; this.milk = milk == null ? 0 : milk.intValue(); this.herbs = herbs == null ? false : herbs.booleanValue(); this.sugar = sugar == null ? 0 : sugar.intValue(); this.teaPowder = teaPowder == null ? DEFAULT_TEA_POWDER : teaPowder.intValue(); }

4. Kesimpulan

Dalam artikel ini, kami melihat penggunaan metode overloading untuk mensimulasikan parameter default di Java.

Meskipun ada cara lain untuk mencapai hal yang sama, kelebihan beban adalah cara yang paling bersih dan sederhana. Seperti biasa, kode tersedia di GitHub.