我想用泛型編碼,但似乎無法弄清楚如何避開使用@SuppressWarnings。如何正確編寫這個通用而不需要@SuppressWarnings
我有以下幾點:
/**
* Cache to know which pool provided which object (to know where to return object when done)
*/
private Map<Object, ObjectPool<?>> objectPoolCache = new ConcurrentHashMap<Object, ObjectPool<?>>();
/**
* Returns a borrowed pool object to the pool
* @param o
* @throws Exception
*/
public void returnToPool(Object o) throws Exception {
// safety check to ensure the object was removed from pool using this interfact
if(!objectPoolCache.containsKey(o))
throw new IllegalStateException("Object is not in pool cache. Do not know which pool to return object to");
// get the object pool
ObjectPool pool = objectPoolCache.remove(o);
// return the object to the pool
pool.returnObject(o);
}
現在,我得到一個警告,ObjectPool pool
是原始類型和return語句類型安全警告。
我的概念如下;我正在尋找一個對象/池對的映射,以便我知道從哪個池中檢索了一個對象,以便知道要將對象返回到哪個池。
ObjectPool可以是任何類型對象的ObjectPool;不需要特定的超類型。
我試過使用<? extends Object>
,但我不完全確定如何使用它而不會導致編譯錯誤。只需用<? extends Object>
替換<?>
就會遇到一個問題,我的方法使用Object作爲參數,這與擴展對象的池不一致。
任何援助將不勝感激。
謝謝!
埃裏克
這幾乎是我的想法,但認爲也許有更多的泛型洞察力的人會有一個奇特的解決方案。可能不會。 :) – 2012-04-09 16:54:59