2013-06-20 100 views
0

我正在嘗試構建HashMap,其鍵是唯一的ID,值是通過反射找到的類的名稱。具有唯一ID的Java反射

我的問題是創建這些獨特的ID。我怎樣才能表現出每個班級都有獨特的身份證,而身份證永遠不會改變。我的意思是,如果我將創建新班級,它永遠不會更改舊的班級ID。

UPDATE
我需要的ID將是一個整數。 (對不起,我沒有提到:P)

+0

將在類名工作的完整路徑?例如內置字符串的java.lang.String? –

+0

你是什麼意思「創建新的類,它永遠不會改變舊的類ID」? – oconnor0

+0

@RobWatts,在可修改的類路徑或多個類加載器的情況下,可能存在完整的類名稱不足。 – oconnor0

回答

0

它不能保證是完全獨特的,只是使用完全合格的類名應該是足夠的。完全限定路徑的String名稱(如java.lang.Math)將是一個很好的「unqiue」標識,並且很少會發生散列衝突。

map.put(MyClass.class.toString(), MyClass.class); 

編輯:如果你需要它是一個int,你可以隨時使用String哈希碼

map.put(MyClass.class.toString().hashCode(), MyClass.class); 
+0

正如我所說這不是保證,但我會冒險猜測,並說你會很難找到真正的類會衝突。此外,如果您非常擔心您也可以使用MultiMap,或者只是製作Map >來解決任何潛在的散列衝突。 – greedybuddha