Parameter Lalai Java Menggunakan Kaedah Overloading

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kami akan menunjukkan penggunaan kaedah overloading untuk mensimulasikan parameter lalai di Java.

Di sini, kita katakan simulasi kerana tidak seperti bahasa OOP lain (seperti C ++ dan Scala), spesifikasi Java tidak menyokong pemberian nilai lalai untuk parameter kaedah .

2. Contoh

Sebagai contoh, mari buat teh! Pertama, kita memerlukan Teh 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 adalah bidang wajib, kerana Teh kami harus mempunyai nama sekurang-kurangnya.

Kemudian, tidak ada teh tanpa serbuk teh. Oleh itu, kami akan menganggap bahawa pengguna menginginkan 1 sudu teh teh tepung standard dalam teh mereka, jika tidak disediakan pada waktu permohonan. Ini adalah parameter lalai pertama kami .

Parameter pilihan lain adalah susu (dalam ml), herba (untuk menambah atau tidak ditambahkan), dan gula (dalam sudu besar). Sekiranya tidak ada nilai yang diberikan, kami menganggap pengguna tidak menginginkannya.

Mari lihat bagaimana mencapainya di Java menggunakan kaedah 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); }

Seperti yang dapat dilihat, di sini kita menggunakan rantai konstruktor, bentuk kelebihan beban untuk memberikan parameter kaedah dengan beberapa nilai lalai.

Sekarang mari kita tambahkan ujian mudah untuk melihat tindakan ini:

@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 lalai di Java. Sebahagian daripadanya adalah:

  • menggunakan corak Builder
  • menggunakan Pilihan
  • Membolehkan null sebagai argumen kaedah

Inilah cara kita memanfaatkan kaedah ketiga untuk membenarkan hujah batal 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 menggunakan metode overloading untuk mensimulasikan parameter lalai di Java.

Walaupun ada cara lain untuk mencapai yang sama, beban berlebihan adalah paling bersih dan sederhana. Seperti biasa, kod tersedia di GitHub.