【发布时间】:2014-07-30 04:38:43
【问题描述】:
我可以在 Java 中做这样的事情吗?
HashMap<String, Child> childMap=new HashMap<String, Child>();
HashMap<String, childMap.typeName> parentMap=new HashMap<String, childMap.typeName>();
//instead of
HashMap<String, HashMap<String, Child>> parentMap=new HashMap<String, HashMap<String, Child>>();
或类似的东西
HashMap<String, HashMap<String, Child>> parent1=new HashMap<String, HashMap<String, Child>>();
parent1.typeName parent2=new parent1.typeName;
因为有些时候,如果地图层级太深或太复杂,很难写和读。
【问题讨论】:
-
简而言之:不,你不能! :) 其次,您选择的标题具有误导性,因为您没有“使用变量来定义另一个”,而是尝试使用“变量的类型......”
-
否,但如果您使用的是 Java 7 或更高版本,则可以缩短它。编译器可以从赋值左侧推断类型参数,您可以在创建对象时完全跳过它们
HashMap<String, HashMap<String, Child>> parentMap = new HashMap<>();在旧版本的 Java 中,您可以使用 Guava'sMapsclass 及其newHashMap方法。HashMap<String, HashMap<String, Child>> parentMap = Maps.newHashMap(); -
所以...一旦您意识到您将地图嵌套在地图中的地图中的地图中的地图中的地图中,您应该真正重新考虑您的数据结构并查看如果你仍然认为合适的话。