Mã Java sau không biên dịch được:
@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
}
Trình biên dịch báo cáo:
Error:(31, 58) java: incompatible types: bad return type in lambda expression
java.lang.String cannot be converted to void
Điều kỳ lạ là dòng được đánh dấu "OK" biên dịch tốt, nhưng dòng được đánh dấu "Lỗi" không thành công. Về cơ bản chúng có vẻ giống hệt nhau.