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