คอมไพล์โค้ด Java ต่อไปนี้ไม่สำเร็จ:
@FunctionalInterface
private interface BiConsumer<A, B> {
void accept(A a, B b);
}
private static void takeBiConsumer(BiConsumer<String, String> bc) { }
public static void main(String[] args) {
takeBiConsumer((String s1, String s2) -> new String("hi")); // OK
takeBiConsumer((String s1, String s2) -> "hi"); // Error
}
คอมไพเลอร์รายงาน:
Error:(31, 58) java: incompatible types: bad return type in lambda expression
java.lang.String cannot be converted to void
สิ่งที่แปลกคือบรรทัดที่ระบุว่า "ตกลง" คอมไพล์ได้ดี แต่บรรทัดที่ระบุว่า "Error" ล้มเหลว ดูเหมือนว่าจะเหมือนกันเป็นหลัก