我希望限制函数的类型参数为一个函数式接口。
类似这样:
```java public void myFunction(T fun) { // some code here } ```
类似这样:
```java public void myFunction(T fun) { // some code here } ```
public static <@FunctionalInterface T extends Function<A, B>> T foo () {
return a -> bar;
}
@FunctionalInterface
在这里不被允许。
目的是为了使返回类型为类型参数的lambda表达式成为可能。由于T
可以是普通类,因此不允许返回lambda表达式。
有没有可能限制类型参数为函数式接口?
Map
类型与Function
的返回类型不匹配,即Map
映射到Integer
,而您的Function
应该返回R extends Integer
,这并没有太多意义,因为Integer
是final
,但编译器仍然对此挑剔,并坚持Integer
不能转换为R extends Integer
。 - HolgerFunction
必须返回该子类型的Foo,但由于Map
的保证是返回Foo,因此您无法实现该要求。 - Holger