제네릭을 사용하여 코드를 작성하려고하지만 @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를 매개 변수로 사용하는 문제가 발생합니다.이 문제는 Object를 확장하는 풀과 일치하지 않습니다.
도움을 주시면 감사하겠습니다.
감사합니다.
에릭
그게 제가 생각한 것 뿐이지요.하지만 제네릭 통찰력이 더 많은 사람이 멋진 해결책을 가지고 있다고 생각했습니다. 맞춰봐. :) –