java对象没塞值_从Java方法返回多个值:为什么没有n元组对象?

我假设OP意味着“为什么Java不支持n元组对象?

Python,Haskell,Lisp,ML等具有异构n元组能力。通常,在一种语言中明显返回多个对象的能力通常是语法糖(即在python返回’a’,’b’)。

原因当然是语言设计和一致性。 Java更喜欢非常明确,不喜欢匿名数据结构(虽然我希望我们有匿名闭包)。

例如在Java中没有办法说我想要一个回调,它接受这些类型参数并返回这个。有些人觉得这是一个巨大的弱点,其他人喜欢一致性和明确性。

IMHO虽然它烦人,我经常打击这个问题,通过静态内联类:

private static class Combo {

String name;

int weight;

}

是它的乏味,但后来我经常重用和重构这些类,使他们的顶级和增加行为。事实上,走这条路线的一个优点是,它更容易添加新的字段,其中是匿名的数据结构(例如在FP语言),变得更加困难,添加一个字段(你最终改变了大量的代码)。

我应该注意,对于2元组,有些人使用(或滥用)java.util.Map.Entry,因为在Java 6中有一个java.util.AbstractMap.SimpleEntry。有些人现在使用Commons Lang3’s Pair support (2-tuple)。

Scala有n-tuple支持通过排序作弊和有一堆2-16元组接口是语言的标准,并从语法上隐藏的程序员。

更新:对于Java 8

Java 8将/也许(所以heres我的号码…叫我可能)支持一个接口java.lang.BiValue与一个具体的实现,你可以使用调用java.lang.BiVal。这些类是帮助支持新的lambda功能。但注意这只是为2元组。

更新:2015年

Java 8没有获得对元组的支持。

更新:从作者2015

如果你仍然想要tuple支持有三个库,支持元组很好:

> javatuples – 支持JDK 5及更高版本。高达10元组。

> JOOλ – 从jOOQ的作者,但需要JDK 8。

> Commons Lang 3 – 现在支持三元组(3元组),并支持JDK 6及更高版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值