Java泛型和类型同义词

时间:2014-10-05 06:16:39

标签: java generics types

我正在考虑实施interface Dto<K, V> extends Map<K, V> {}之类的内容,但我真正想要表达的是Dto<K, V>Map<K, V> {}的类型同义词,就像你在Haskell http://www.haskell.org/haskellwiki/Type_synonym中所做的那样提高代码的可读性。

这可以用Java表达,还是应该直接使用Map接口?

1 个答案:

答案 0 :(得分:4)

据我所知,Java无法定义同义词。

然而,泛型确实提供了同义词的一些表现力。参数化类型(例如&#34; V&#34;)表示对象的类型。

Map<Sting, Dto> dtoMap = ...

这显然是Sting-&gt; Dto的地图。

一些纯粹用于重命名的扩展内置类型的主题被一些人视为反模式。虽然这是一个有争议的话题。请参阅:https://softwareengineering.stackexchange.com/questions/246277/good-or-bad-practice-to-mask-java-collections-with-meaningful-class-names