gpt4 book ai didi

java - 功能接口(interface)映射的正确键入 (Java 8)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:23 25 4
gpt4 key购买 nike

我正在尝试将字符串映射存储到 HashMap 中的函数,但我正在努力确保输入正确。如何存储由通用功能接口(interface)定义的不同类型的功能?

这是相关代码。

@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);

最后两行没有编译并出现以下(明显的)错误:

-对象类型的方法 length() 未定义
-运算符 + 对于参数类型 Object 是未定义的,int

所以我的问题是,当我将 lamda 存储在 HashMap 中时,如何指定 Converter 的类型 F 和 T,这样我就不会被迫从 Object 转换所有内容?

最佳答案

指定lambda参数的类型(F)

fooMapping.put("name", (String someString) -> someString.length());
fooMapping.put("flavor", (Integer someInt) -> someInt + 1);

返回类型 (T) 将从 lambda 主体表达式的类型推断出来。

关于java - 功能接口(interface)映射的正确键入 (Java 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28029795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com