Java非检查代码

Java非检查代码,java,Java,我写了一个简单的类(StringPool本身的优点不是我的问题;我想要这个类有具体的原因): 当我编译它时,编译器注意到它使用未经检查或不安全的操作: 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-var

我写了一个简单的类(StringPool本身的优点不是我的问题;我想要这个类有具体的原因):

当我编译它时,编译器注意到它使用未经检查或不安全的操作:

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
如何修复这些警告,使代码编译干净且正确?

添加泛型:

WeakHashMap<String, WeakReference<String>>
以及:

看起来像:

m_pool.get(s);

各自的。

使用泛型:

public final class StringPool {

    private WeakHashMap<String, WeakReference<String>> m_pool = new WeakHashMap<String, WeakReference<String>>();

    public String intern(String s) {
        WeakReference<String> reference = m_pool.get(s);
        if (reference != null) {
            String interned = reference.get();
            if (interned != null)
                return interned;
        }
        m_pool.put(s, new WeakReference<String>(s));
        return s;
    }
};
公共最终类字符串池{
私有WeakHashMap m_pool=新WeakHashMap();
公共字符串实习生(字符串s){
WeakReference reference=m_pool.get(s);
如果(引用!=null){
字符串interned=reference.get();
如果(实习!=null)
返回实习;
}
m_pool.put(s,新WeakReference(s));
返回s;
}
};
(String)reference.get()
m_pool.get(s);
reference.get()
public final class StringPool {

    private WeakHashMap<String, WeakReference<String>> m_pool = new WeakHashMap<String, WeakReference<String>>();

    public String intern(String s) {
        WeakReference<String> reference = m_pool.get(s);
        if (reference != null) {
            String interned = reference.get();
            if (interned != null)
                return interned;
        }
        m_pool.put(s, new WeakReference<String>(s));
        return s;
    }
};