在Java 8中进行一些函数式编程时,我需要一个类似于任何函数式编程语言的元组,但后来我发现语言设计者可能通过制作Bifunction
来解决对元组的需求。
如果你需要一个能够使用2个参数的函数你必须使用Bifunction而不是函数,但是我找不到任何关于这个的文档,Java8真的缺少元组,或者Bifunction可以替换它吗' s使用?
修改1:
这个问题不是" Java SE 8是否有Pairs或Tuples?"因为这里的大多数是Bifunction,而在另一个问题中没有提到,我认为问题标题现在更具描述性。
答案 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。