Saya sering bertanya-tanya mengapa Java menggunakan ::
referensi metode alih-alih .
, misalnya mengapa menulis
System.out::println
dari pada
System.out.println
Tentu saja, orang mungkin hanya menjawab: "karena para desainer memutuskan demikian". Di sisi lain, saya akan mengharapkan sintaks kedua karena titik adalah sintaks Java yang biasa untuk mengakses anggota kelas.
Jadi adakah alasan khusus yang diketahui untuk memperkenalkan ::
sintaks baru alih-alih menggunakan .
konvensi yang ada untuk referensi metode?
Mereka memperkenalkan sintaksis baru karena perilakunya tidak sama.
The
.
berarti bahwa Anda ingin mendapatkan referensi pada fungsi untuk memanggil itu tepat setelah.Bila Anda menggunakan referensi metode (
::
) Anda ingin menyimpan referensi pada fungsi tetapi Anda tidak ingin memohon segera.Aspek yang lebih praktis adalah bagaimana Anda membedakan antara atribut publik dan metode yang memiliki nama yang sama dengan
.
? Anda tidak bisa. Dengan::
tidak ada lagi ambiguitas.sumber