我试图在HashMap中存储字符串到函数的映射,并且很难正确地输入。如何存储由泛型函数接口定义的不同类型的函数?
这是相关代码。
@FunctionalInterface
public interface Converter<F,T> {
T convert(F from);
}
HashMap<String, Converter<?, ?>> fooMapping= new HashMap<String, Converter<?, ?>>();
fooMapping.put("name", (someString) -> someString);
fooMapping.put("flavor", (someInt) -> someAge + 1);最后两行编译时不会出现以下(明显的)错误:
类型对象的-The方法长度()未定义
对于参数类型(S)对象int,未定义-The运算符+
所以我的问题是,当我将lamda存储在我的hashmap中时,如何指定转换器的类型F和T,这样我就不会被迫从对象中抛出所有的内容?
发布于 2015-01-19 16:58:38
指定lambda参数(F)的类型
fooMapping.put("name", (String someString) -> someString.length());
fooMapping.put("flavor", (Integer someInt) -> someInt + 1);返回类型(T)将从lambda表达式的类型中推断出来。
https://stackoverflow.com/questions/28029795
复制相似问题