Java Util函数和Collections4 Transformer之间有什么区别?
接口的区别是什么:
他们不是在做类似的动作吗
T-->;做事-->;R
假设我有一个User
对象,我想让其中一个接口将loginname
作为该对象的String
返回给我。我可以两者都用吗
@Override
public String apply(User user) {
return user.getLoginname();
}
或
@Override
public String transform(User user) {
return user.getLoginname();
}
# 1 楼答案
这两个接口具有相同的功能,它们以某种类型的对象作为输入,并返回某种类型(可能不同)的对象
Transformer
的文档范围稍窄一些,在某种意义上,“计算的转换”对我来说是“计算的函数”的一种特殊情况,但这很弱这些接口之间最重要的区别在于实例如何与其他对象一起使用。它们是不可互换的。因此,如果您想使用
TransformedList
,那么必须根据Transformer
而不是Function
来定义它。如果要从Stream
获取flatMap
,则需要Function
,而不是Transformer
但是,由于它们基本上只是同一想法的不同名称,因此编写适配器使您能够在需要另一种类型的上下文中使用一种类型是很简单的
# 2 楼答案
名字
对
当然可以,但是如果可以使用内置类型,为什么还要依赖Commons Collections