递归数据类型java泛型类型警告

时间:2014-03-17 19:39:01

标签: java

我正在尝试制作一个递归的HashMap数据结构:

public HashMap<Character, HashMap> root;

root中的HashMap也是<Character, HashMap>类型。这会抛出原始类型警告,因为里面的HashMap没有参数化。我想不出一种方法来消除这些警告,因为任何明确参数化HashMap的尝试都不会因为它的递归性质而停止。有什么建议吗?

谢谢!

3 个答案:

答案 0 :(得分:6)

宣告:

class MyHashMap extends HashMap<Character, MyHashMap> { }

定义:

MyHashMap root;

广义形式:

声明接口:

interface RecursiveMap<K> extends Map<K, RecursiveMap<K>> { }

宣布实施:

class RecursiveHashMap<K> extends HashMap<K, RecursiveMap<K>> implements RecursiveMap<K> { }

class RecursiveTreeMap<K> extends TreeMap<K, RecursiveMap<K>> implements RecursiveMap<K> { }

定义:

RecursiveMap<Character> root  = new RecursiveHashMap<Character>();

RecursiveMap<Character> root2 = new RecursiveTreeMap<Character>();

答案 1 :(得分:0)

您不确定内部Map的泛型类型,然后使用下面的代码。

始终使用接口进行声明。

如果以后您想要更改root类型的TreeMap,那么您可以轻松完成。

Map<Character, Map<Character,Object>> root=new  HashMap<Character, Map<Character,Object>>();

答案 2 :(得分:0)

我认为拥有递归Map并不可思议,因为在任何给定的时间点,你可能想要某种类型的对象类型与Map不同,否则它将具有infinte depth(没有感)。 尝试使用:

  1. Map<Character, Map<Character, Object>,或
  2. 使用Class来保存Map并递归存储该类。