Rumah  >  Artikel  >  Java  >  Apakah ungkapan lambda yang setara untuk `System.out::println` dalam Java?

Apakah ungkapan lambda yang setara untuk `System.out::println` dalam Java?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 03:26:03966semak imbas

What is the equivalent lambda expression for `System.out::println` in Java?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn