自动推断乘法有界类型参数 - 是否可能?

时间:2017-04-04 08:54:05

标签: java

在以下代码中:

interface Callback {
    void greet(String greeting);
}

private static <T extends Callback & Serializable> void greetMe(T callback) {
    callback.greet("Hello world!");
}

public static void main(String[] args) {
    greetMe(greeting -> System.out.println(greeting));
}

以下行无法编译,因为lambda不是 Serializable

greetMe(greeting -> System.out.println(greeting));

我的问题是,是否存在使lambda实现Serializable的语法糖,或者我是否必须使其成为非匿名类?

1 个答案:

答案 0 :(得分:1)

来自JLS 15.16. Cast Expressions

  

强制转换可用于显式“标记”具有特定目标类型的lambda表达式或方法引用表达式。为了提供适当程度的灵活性,目标类型可以是表示交叉点类型的类型列表,只要交集引入功能接口(第9.8节)。

您可以将其直接投射到Serializable

greetMe((Callback & Serializable) greeting -> System.out.println(greeting));