Map.entry(Java)是否是与.Net元组的最佳等价物?

Map.entry(Java)是否是与.Net元组的最佳等价物?,java,tuples,Java,Tuples,我正在将.NETRESTful服务器(无UI)移植到Java8。它看起来最好的等价物(我经常使用)是Map.entry。我看不出这有什么坏处,它只是对类的一种奇怪的使用。它真的不是一个好的类 没有任何东西可以阻止您创建自己的Tuple类。但Java不包含一个名称是有原因的——一般来说,类型应该有有有意义的名称。“元组”并不是真正告诉你元组中有什么 如果您使用的是var name和address=new Tuple(name,address),那么您就依赖于变量的名称来告诉您Tuple是什么。一旦

我正在将.NETRESTful服务器(无UI)移植到Java8。它看起来最好的等价物(我经常使用)是Map.entry。我看不出这有什么坏处,它只是对类的一种奇怪的使用。

它真的不是一个好的类

没有任何东西可以阻止您创建自己的
Tuple
类。但Java不包含一个名称是有原因的——一般来说,类型应该有有有意义的名称。“元组”并不是真正告诉你元组中有什么

如果您使用的是
var name和address=new Tuple(name,address)
,那么您就依赖于变量的名称来告诉您Tuple是什么。一旦将此元组分配给另一个变量,就会丢失该信息。更糟糕的是,您失去了类型安全性,因为您可以为这个变量分配任何类似的元组。创建一个显式的
nameanddress
类可以避免这个陷阱

是的,您可能会得到更多的类,但实际上您得到了其他开发人员可以轻松使用的惯用Java代码,而不是尝试将外来惯用语移植到Java

滥用
Map.Entry
甚至更糟糕,因为典型的Java开发人员不希望在Map之外看到
Map.Entry

因此,与泛型元组类相比,我们更喜欢有意义的类型,而与
Map.Entry
相比,我们更喜欢有意义的类型


作为旁注:记录可能会大大有助于减少创建此类类的样板文件。或者,使用Lombok。

一种可能有用的方法,而不是尝试使用
映射。Entry
类将使用一些提供
元组类型的常见Java库。本文概述了Java社区中广泛使用的不同库/方法,以补充缺少
元组的不足。例如ApacheCommons(提供可变/不可变元组)或Vavr(提供不可变元组的函数库)之类的库。我已经使用了这两个以前的库,并且发现它们非常有用。

我将避免使用Map.Entry。充其量也会让人困惑。创建自己的元组类没有坏处。我同意@MichaelBianconi。我发现使用pair和tuple类的代码很难阅读,因为它们不会告诉您其中包含什么。