我想编写一个具有泛型方法的功能性非泛型接口的实现。实现需要是内联闭包和简洁的。
作为一个简化的例子
@FunctionalInterface interface Fn {
<R> R fn(R arg);
}
public class Scratch {
Fn id = arg -> arg;
//Fn nul = arg -> null;
//Fn requiresNonNull = ...
}
这使
/Scratch.java:5: error: incompatible types: invalid functional descriptor for lambda expression
Fn id = arg -> arg;
^
method <R>(R)R in interface Fn is generic
where R is a type-variable:
R extends Object declared in method <R>fn(R)
1 error
(实际上,该参数将是一个具有返回类型为 的方法的通用接口R。)
有没有一种解决方法而不必回到匿名内部类的冗长之处?
有一个明显的类似的问题,“不能转换功能界面与通用方法引入lambda表达式”,但是从使用一个被称为类型参数茎Integer,而不是其他传统一样T,和乔恩斯基特的接受的答案说,他不知道解决我的问题。
还有一个很长的讨论,“功能接口混淆”,没有回答这个问题。不可能是“这里最好使用冗长的匿名内部类”,对吗?
芜湖不芜
慕的地10843
相关分类