可以使用Bifunction来替换Java 8中的元组吗?

时间:2015-11-11 19:25:49

标签: java functional-programming java-8

在Java 8中进行一些函数式编程时,我需要一个类似于任何函数式编程语言的元组,但后来我发现语言设计者可能通过制作Bifunction来解决对元组的需求。

如果你需要一个能够使用2个参数的函数你必须使用Bifunction而不是函数,但是我找不到任何关于这个的文档,Java8真的缺少元组,或者Bifunction可以替换它吗' s使用?

修改1:

这个问题不是" Java SE 8是否有Pairs或Tuples?"因为这里的大多数是Bifunction,而在另一个问题中没有提到,我认为问题标题现在更具描述性。

1 个答案:

答案 0 :(得分:1)

您不应该使用BiFunction,因为它与您尝试执行的操作的语义并不完全匹配。我也没有看到你如何建议从BiFunction中获取两个不同的值,因为它只返回一种类型的一个元素。

Apache Commons-Lang有一个tuple package个包。

但是否则我建议创建一个包含两个命名字段的类,以便捕获配对的语义。

class UserName {
    private String userName, phoneNumber;
}

在变量名称中传达意图,它与

不同
class UserPassword {
    private String userName, password;
}

如果你在有限的范围内使用这些(即只在一个类或一个包中),我不会为吸气剂和制定者而烦恼。

否则,您试图抽象出数据的形状,而不是类的类型或语义,这在Java中是非常不惯用的。有关该主题的更多信息,请参阅answer posted as a comment