簡體   English   中英

遞歸數據類型java泛型類型警告

[英]Recursive data type java generic type warnings

我正在嘗試制作一個遞歸的HashMap數據結構:

public HashMap<Character, HashMap> root;

根目錄中的HashMap也是<Character, HashMap>類型。 這會拋出原始類型警告,因為里面的HashMap沒有參數化。 我想不出一種方法來消除這些警告,因為任何明確參數化HashMap嘗試都不會因為它的遞歸性質而停止。 有什么建議?

謝謝!

宣布:

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>();

你不確定內部Map泛型類型然后使用下面的代碼。

始終使用接口進行聲明。

如果您將來想要更改TreeMap類型的root ,那么您可以輕松完成。

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

我認為擁有遞歸Map是不可思議的,因為在任何給定的時間點,你可能希望某種對象類型與Map不同,否則它將具有無限深度(沒有意義)。 嘗試使用:

  1. Map<Character, Map<Character, Object> ,OR
  2. 使用Class來保存Map並遞歸地存儲該類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM