Saya telah melihat diskusi di pertanyaan ini mengenai bagaimana kelas yang mengimplementasikan dari antarmuka akan dipakai. Dalam kasus saya, saya sedang menulis sebuah program yang sangat kecil di Jawa yang menggunakan instance dari TreeMap
, dan menurut pendapat semua orang di sana, itu harus dipakai seperti:
Map<X> map = new TreeMap<X>();
Dalam program saya, saya memanggil fungsi map.pollFirstEntry()
, yang tidak dideklarasikan di Map
antarmuka (dan beberapa lainnya yang ada di Map
antarmuka juga). Saya telah berhasil melakukan ini dengan melakukan casting ke TreeMap<X>
mana saja saya memanggil metode ini seperti:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
Saya memahami keuntungan dari pedoman inisialisasi seperti dijelaskan di atas untuk program besar, namun untuk program yang sangat kecil di mana objek ini tidak akan diteruskan ke metode lain, saya akan berpikir itu tidak perlu. Namun, saya menulis kode sampel ini sebagai bagian dari aplikasi pekerjaan, dan saya tidak ingin kode saya terlihat buruk atau berantakan. Apa yang akan menjadi solusi paling elegan?
EDIT: Saya ingin menunjukkan bahwa saya lebih tertarik pada praktik pengkodean luas yang baik daripada penerapan fungsi tertentu TreeMap
. Seperti yang telah ditunjukkan beberapa jawaban (dan saya telah menandai sebagai jawaban yang pertama melakukannya), tingkat abstraksi yang lebih tinggi mungkin harus digunakan, tanpa kehilangan fungsionalitas.