ToIntFunction<String> i = (x)-> Integer.parseInt(x);
System.out.println(i.applyAsInt("21235"));
以上是TointFunction的一个示例,其中T是类型字符串。
根据定义,我可以传递给它的其他哪些类型也接受通用类型T
。
除String以外的其他与其他类型相同的示例。
答案 0 :(得分:3)
功能接口ToIntFunction<T>
只是一个没有任何实现的接口。 T
类型应替换为您实现此接口所用的任何类型。您不能对各种未知类型的所有对象使用唯一的实现。
这适用于您定义的字符串:
ToIntFunction<String> i = (x) -> Integer.parseInt(x);
您已将T
替换为String
,该函数除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
。
答案 1 :(得分:1)
ToIntFunction<T>
是一个功能接口,可帮助您将T
类型的对象转换为int
。
请注意,您必须提供有关如何将类型T
转换为int
的定义。
在您的示例中,您将T
用作String
,并提供了一种通过以下方法将string
转换为int
的机制。
ToIntFunction<String> i = (x)-> Integer.parseInt(x);
因此,它适用于“ 21235”。但是,它会中断Integer.parseInt(x)
无法解析的其他任何事情。
如果要解析与int
不同的对象,则必须编写适当的ToIntFunction
函数。下面是将自定义类型类MyClass
转换为int
的示例。
class MyClass{ public String num;}
ToIntFunction<MyClass> i = (x1)-> Integer.parseInt(x1.num);
现在,以上ToIntFunction
将适用于MyClass
类型的对象。
答案 2 :(得分:0)
使用ToIntFunction<T>
作为目标类型时,这意味着赋值运算符右侧的任何lambda /函数都必须是消耗类型T
并返回int
的对象。 Lambda或自定义函数执行哪种逻辑都没有关系。
在此特定示例中,当您在赋值运算符的右侧使用Integer.parseInt(...)
时,唯一的类型T
可以使代码编译和工作为{{1 }}。