私は単純なクラスを作成します(StringPools自体のメリットは私の質問ではありません。このクラスが必要な特定の理由があります):
import java.lang.ref.WeakReference;
import java.util.WeakHashMap;
public final class StringPool {
private WeakHashMap m_pool = new WeakHashMap();
public String intern(String s) {
WeakReference reference = (WeakReference)m_pool.get(s);
if(reference != null) {
String interned = (String)reference.get();
if(interned != null)
return interned;
}
m_pool.put(s,new WeakReference(s));
return s;
}
};
私がそれをコンパイルするとき、コンパイラはそれがチェックされていないまたは安全でない操作を使用していることに気づきます:
warning: [unchecked] unchecked call to WeakReference(T) as a member of the raw type WeakReference
m_pool.put(s,new WeakReference(s));
^ where T is a type-variable:
T extends Object declared in class WeakReference
warning: [unchecked] unchecked call to put(K,V) as a member of the raw type WeakHashMap
m_pool.put(s,new WeakReference(s));
^ where K,V are type-variables:
K extends Object declared in class WeakHashMap
V extends Object declared in class WeakHashMap
2 warnings
コードがクリーンにコンパイルされて正しくなるように、これらの警告をどのように修正する必要がありますか?