首页 > 解决方案 > 我可以将哪种类型的参数传递给 JAVA 8 中的 ToIntFunction 功能接口

问题描述

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

上面是 TointFunction 的一个示例,其中 T 是字符串类型。我可以传递给它的其他类型根据定义它接受 Generic Type T

任何其他与除字符串外的其他类型相同的示例。

标签: javalambdajava-8functional-interface

解决方案


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

正如您所定义的,这适用于字符串:

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

您已替换TString, 函数 exceptsString没有讨论并返回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在任何情况下,实现都必须确保结果。


推荐阅读