我有類似的東西:Java靜態通用的HashMap
private static LinkedHashMap<Class<?>, ?> configFiles;
和靜態方法:
@SuppressWarnings("unchecked")
public static <T> T getConfigFile(Class<T> clazz) throws Exception {
return (T) configFiles.get(clazz);
}
,但我有init方法:
configFiles = new LinkedHashMap<Class<T>, T>();
並且它沒有編譯:/
但是,如果我做這樣的事情:
@SuppressWarnings("unchecked")
@Override
public void intitConfigFiles()
throws ClassNotFoundException, ConfigurationFilesException
{
configFiles = new LinkedHashMap<Class<?>, T>();
}
它的工作,但我不知道怎麼用put方法:/
Class<T> clazz = (Class<T>) Class.forName(prop.getValue());
jc = JAXBContext.newInstance(clazz);
u = jc.createUnmarshaller();
configFiles.put(clazz, u.unmarshal(inputStream));
,我已經在Eclipse中遇到錯誤我不知道懂得如何正確使用put方法?
請提供給我們您收到的錯誤消息。 – 2012-08-01 12:53:11
你在這行u.unmarshal(inputStream)中有沒有捕獲異常? – 2012-08-01 12:54:23
您可能有興趣使用Guava的['ClassToInstanceMap'](http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/collect/ClassToInstanceMap.html),它爲這類事情實現了一個類型安全的包裝器。 – 2012-08-01 12:55:23