我已創建一個hashtable..that方法的簽名的方法是Java的哈希表
void CreateHashTable(String KeyType,String ValueType)
我想是這樣的
Hashtable<KeyType,ValueType> hashtable1;
讓我創造我的哈希表鍵,按我的價值要求 但是如何?我需要,而不是數據類型的字符串 的,我認爲這是可以理解
任何幫助應該是極大的讚賞 感謝
我已創建一個hashtable..that方法的簽名的方法是Java的哈希表
void CreateHashTable(String KeyType,String ValueType)
我想是這樣的
Hashtable<KeyType,ValueType> hashtable1;
讓我創造我的哈希表鍵,按我的價值要求 但是如何?我需要,而不是數據類型的字符串 的,我認爲這是可以理解
任何幫助應該是極大的讚賞 感謝
你可能想這樣做
Class key = Class.forName(KeyType);
Class value = Class.forName(ValueType);
return new HashTable<key, value>();
你是如何解決該函數返回無效的? :D – 2011-03-29 16:10:36
-1。這不會編譯。 – 2011-03-29 16:10:50
@Jan Zyka,哈,我沒有注意到這一點。 @西蒙尼克森,我沒有機會去測試它,但我不確定它是否可行。我想有沒有辦法做到這一點,然後給予兩個字符串輸入.... – 2011-03-29 16:13:20
public static <K,V> HashMap<K,V> create(Class<K> keytype, Class<V> valtype) {
return new HashMap<K,V>();
}
鑑於只字符串指定的對象類型,你可以Class.forName但這不會給你一個類型安全的泛型,即:
public static HashMap create(String keyClassName, String valClassName) {
return create(Class.forName(keyClassName), Class.forName(valClassName));
}
泛型是一個編譯時的功能,所以你在運行時所做的任何事情,例如按名稱查找類,超出了編譯器確定的能力。您必須提供編譯器可以確定的類別< K>。
順便說一句:不要使用哈希表,除非你必須。它被Java 1.2中的J2SE Collections取代(1998)
你能否給我提供一些鏈接,因爲我不熟悉這些鏈接,因此我可以獲得有關集合的基本知識 – 2011-03-29 16:41:40
當你不知道它需要什麼類型時,你將如何處理Hashtable(或HashMap,如果你不需要線程安全的話)或其他集合?在某些情況下,您需要知道集合中的內容以使用這些值,除非您真的在尋找類型無差異的類型安全性。
如果你知道你想要什麼,例如您可以使用Java 7的「diamond operator」。Josh Bloch的有效Java顯示瞭如何在Java 5中執行相同的操作。以此爲例。
這兩個要求你提前提供你想要的模板,例如HashMap<String, String>
而不只是單詞「字符串」和「字符串」。我認爲工廠鏈上的this article描述了你正在尋找的東西,但這並不容易。
我可以給你的最好的建議是重新考慮你的設計。我很確定你並不需要做你想做的事情。也許如果你解釋了你正在努力解決的問題,我們可以想出更好的方法。
我認爲可能這是不可能的 – 2011-03-29 16:04:58