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