Rumah >Java >javaTutorial >Apakah ungkapan lambda yang setara dengan rujukan kaedah System.out::println?

Apakah ungkapan lambda yang setara dengan rujukan kaedah System.out::println?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 06:26:02913semak imbas

What is the lambda expression equivalent to the System.out::println method reference?

Persamaan System.out::println Rujukan Kaedah dalam Ungkapan Lambda

Di Java, kaedah rujukan System.out::println membenarkan untuk cara ringkas untuk merujuk kepada kaedah System.out.println(). Ia menilai System.out dan memberikannya kepada pembolehubah.

Soalan:

Apakah ungkapan lambda yang sepadan untuk System.out::println yang menyediakan tingkah laku yang sama ?

Jawapan:

Ungkapan lambda setara yang tepat ialah:

num -> {
    PrintStream p = Objects.requireNonNull(System.out);
    p.println(num);
}

Ungkapan lambda ini menangkap rujukan kepada System.out dalam pembolehubah p sebelum melaksanakan kaedah println. Ini menghalang sebarang perubahan pada System.out daripada menjejaskan kelakuan ungkapan lambda.

Perbezaan daripada Ungkapan Lambda Mudah:

Ungkapan lambda yang lebih ringkas seperti num -> System.out.println(num) akan menilai System.out setiap kali ia dipanggil, menjadikannya terdedah kepada perubahan dalam System.out semasa lambda dilaksanakan.

Penggunaan:

Ungkapan lambda yang setara boleh digunakan dengan cara yang sama seperti System.out::println, seperti:

List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
numbers.forEach(num -> {
    PrintStream p = Objects.requireNonNull(System.out);
    p.println(num);
});

Kod ini akan mencetak nombor dalam senarai ke konsol.

Atas ialah kandungan terperinci Apakah ungkapan lambda yang setara dengan rujukan kaedah System.out::println?. 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