java - 我可以将哪种类型的参数传递到 JAVA 8 中的 ToIntFunction 功能接口(interface)中

标签 java lambda java-8 functional-interface

ToIntFunction<String> i = (x)-> Integer.parseInt(x);
System.out.println(i.applyAsInt("21235"));

上面是 TointFunction 的一个示例,其中 T 是字符串类型。 我还可以将哪些其他类型传递给它,因为根据定义它接受通用类型 T

除字符串之外的其他类型的任何其他示例。

最佳答案

功能界面ToIntFunction<T>只是一个接口(interface),没有任何实现。 T type 应替换为您实现此接口(interface)的任何类型。您不能对各种未知类型的所有对象范围使用唯一的实现。

这适用于您定义的字符串:

ToIntFunction<String> i = (x) -> Integer.parseInt(x);

您已替换 TString ,该函数除了 String没有讨论并返回 Integer 。如果您希望其他类型具有相同的功能,请实现它:

ToIntFunction<List<?>> i1  = list -> list.size();                  // A primitive example:
i1.applyAsInt(new ArrayList<>());                                  // gets size of any List

ToIntFunction<MyObject> i2 = myObject -> myObject.getNumber();     // A custom object
i2.applyAsInt(new MyObject());

重点是,任何类型都可以用一个简单的规则替换:实现必须保证 Integer无论如何,结果都是如此。

关于java - 我可以将哪种类型的参数传递到 JAVA 8 中的 ToIntFunction 功能接口(interface)中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51457265/

相关文章:

java - 如何从 selenium java 中的 Web 元素中提取 XPATH 或 CSSPath

c++ - 为使用函数对象而编写的类也可以使用 lambda 或 std::function 类型吗?

c# - 无法将 lambda 表达式转换为类型 'System.Linq.Expressions.Expression',因为它不是委托(delegate)类型

java - 为什么 stream.spliterator() 的 tryAdvance 可能会将项目累积到缓冲区中?

java applet paint方法麻烦

java - 组织.hibernate.boot.MappingNotFoundException : Mapping (RESOURCE) not found

java - "Package has incorrect spelling" eclipse

python - Python 的 lambda 函数中的无效闭包

java - Kafka 消费者在可完成的 future 内抵消提交

java - 将 HashSet 的内容与 map 进行比较