1
เหตุใดพารามิเตอร์ประเภทจึงแข็งแรงกว่าจึงเป็นพารามิเตอร์วิธี
ทำไม public <R, F extends Function<T, R>> Builder<T> withX(F getter, R returnValue) {...} เข้มงวดมากขึ้นแล้ว public <R> Builder<T> with(Function<T, R> getter, R returnValue) {...} นี่คือการติดตามขึ้นไปบนทำไมแลมบ์ดาชนิดกลับไม่ได้ตรวจสอบที่รวบรวมเวลา ฉันพบว่าใช้วิธีการwithX()เช่น .withX(MyInterface::getLength, "I am not a Long") สร้างข้อผิดพลาดเวลารวบรวมที่ต้องการ: ประเภทของ getLength () จากประเภท BuilderExample.MyInterface มีความยาวไม่สามารถใช้ร่วมกับชนิดส่งคืนของ descriptor: String ในขณะที่ใช้วิธีการwith()ไม่ได้ ตัวอย่างเต็มรูปแบบ: import java.util.function.Function; public class SO58376589 { public static …