Java Util Function和Collections4 Transformer有什么区别?

时间:2018-07-11 20:24:04

标签: java

接口的区别是什么

他们不是在做类似的动作吗?:

T->做事情-> R

假设我有一个User对象,并且我想让这些接口之一从该对象向我返回loginname作为String。我可以同时使用吗?

@Override
    public String apply(User user) {
        return user.getLoginname();
    }

@Override
    public String transform(User user) {
        return user.getLoginname();
    }

2 个答案:

答案 0 :(得分:3)

这两个接口具有相同的功能-它们将某种类型的对象作为输入,并返回某种类型(可能不同)的对象。 Transformer的文档范围稍微狭窄一些,在某种意义上,“对...的转换”对我来说是“对...的函数进行计算”的一种特殊情况,但这很薄弱。

这些接口之间最重要的区别是实例如何与其他对象一起使用。它们是不可互换的。因此,如果要使用TransformedList,则必须根据Transformer而不是Function进行定义。如果要从flatMap获取Stream,则需要Function,而不是Transformer

因为它们基本上只是同一想法的不同名称,但是编写适配器以使您能够在需要另一种类型的上下文中使用一种类型是很简单的。

答案 1 :(得分:1)

  

有什么区别?

名字。

  

他们不是在做类似的动作吗?

是的

  

我可以同时使用吗?

可以,但是如果可以使用内置类型,为什么还要依靠Commons Collections