Meneroka Ungkapan Lambda Setara untuk System.out::println
Dalam pengaturcaraan Java, rujukan kaedah menawarkan sintaks ringkas untuk menggunakan kaedah. Satu contoh sedemikian ialah System.out::println, yang berfungsi sebagai pintasan untuk merujuk kepada kaedah println kelas System.out.
Rujukan kaedah ini membolehkan kami menulis kod seperti ini:
numbers.forEach(System.out::println);
di mana senarai nombor mengandungi integer yang dicetak ke konsol. Walau bagaimanapun, terdapat ungkapan lambda sepadan yang mencapai kefungsian yang sama.
Untuk mencari ungkapan lambda ini, kita perlu memahami cara rujukan kaedah berfungsi. Apabila menggunakan System.out::println, penilaian awal System.out menghasilkan tika PrintStream, yang disimpan dalam ungkapan lambda dan digunakan untuk memanggil println.
Menerjemahkan secara langsung konsep ini ke dalam ungkapan lambda, kita mendapat yang berikut:
numbers.forEach(o -> { PrintStream p = Objects.requireNonNull(System.out); p.println(o); });
Ungkapan lambda ini secara eksplisit mendapatkan semula tika PrintStream dan menetapkannya kepada pembolehubah p. Pemegang tempat o mewakili setiap elemen senarai nombor.
Perlu diambil perhatian bahawa ungkapan lambda ini ialah persamaan tepat bagi System.out::println, yang menangkap contoh System.out yang dinilai. Walau bagaimanapun, rujukan kaedah terakhir mempunyai kelebihan kerana lebih ringkas dan boleh dibaca.
Jadi, sementara ungkapan lambda memberikan pandangan yang lebih jelas tentang perkara yang berlaku di bawah tudung, rujukan kaedah System.out::println kekal pintasan sintaksis yang berharga dalam senario seperti yang ditunjukkan di atas.
Atas ialah kandungan terperinci Apakah ungkapan lambda yang setara untuk `System.out::println` dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!