要使用嵌套的通用集合还是自定义中间类?

oxb*_*kes 6 java oop generics

在将泛型引入Java语言之前,我会编写封装集合集合的类.例如:

class Account {
   private Map tradesByRegion; //KEY=Region, VALUE=TradeCollection
}

class TradeCollection {
   private Map tradesByInstrument; //KEY=Instrument, Value=Trade
}
Run Code Online (Sandbox Code Playgroud)

当然,对于泛型,我可以这样做:

class Account {
   private Map<Region, Map<Instrument, Trade>> trades;
}
Run Code Online (Sandbox Code Playgroud)

我现在倾向于选择选项#2(在选项#1通用版本上),因为这意味着我最终不会出现仅仅为了包装集合而存在的类的扩散.但我有一种唠叨的感觉,这是糟糕的设计(例如,在声明新类之前我应该​​使用多少嵌套集合).意见?

Ste*_* B. 4

2 更好,因为:

  • 更少的代码可以达到相同的效果(实际上更好,如#1 中的一些类型信息仅存在于注释中)
  • 发生了什么事情已经很清楚了。
  • 您的类型错误将在编译时被捕获。

有什么可以推荐的吗1 诚然, Map< Integer 、 < Map < String、 < Map< ...泛型有点难以习惯,但在我看来,它比使用映射、映射列表和列表映射的代码更容易理解地图,以及充满地图列表的自定义对象。