我正在嘗試構建HashMap,其鍵是唯一的ID,值是通過反射找到的類的名稱。具有唯一ID的Java反射
我的問題是創建這些獨特的ID。我怎樣才能表現出每個班級都有獨特的身份證,而身份證永遠不會改變。我的意思是,如果我將創建新班級,它永遠不會更改舊的班級ID。
UPDATE
我需要的ID將是一個整數。 (對不起,我沒有提到:P)
我正在嘗試構建HashMap,其鍵是唯一的ID,值是通過反射找到的類的名稱。具有唯一ID的Java反射
我的問題是創建這些獨特的ID。我怎樣才能表現出每個班級都有獨特的身份證,而身份證永遠不會改變。我的意思是,如果我將創建新班級,它永遠不會更改舊的班級ID。
UPDATE
我需要的ID將是一個整數。 (對不起,我沒有提到:P)
它不能保證是完全獨特的,只是使用完全合格的類名應該是足夠的。完全限定路徑的String
名稱(如java.lang.Math
)將是一個很好的「unqiue」標識,並且很少會發生散列衝突。
例
map.put(MyClass.class.toString(), MyClass.class);
編輯:如果你需要它是一個int,你可以隨時使用String哈希碼
map.put(MyClass.class.toString().hashCode(), MyClass.class);
正如我所說這不是保證,但我會冒險猜測,並說你會很難找到真正的類會衝突。此外,如果您非常擔心您也可以使用MultiMap,或者只是製作Map
將在類名工作的完整路徑?例如內置字符串的java.lang.String? –
你是什麼意思「創建新的類,它永遠不會改變舊的類ID」? – oconnor0
@RobWatts,在可修改的類路徑或多個類加載器的情況下,可能存在完整的類名稱不足。 – oconnor0