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:
Listnumbers = 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!