gpt4 book ai didi

Java未经检查的代码

转载 作者:行者123 更新时间:2023-12-02 07:37:31 25 4
gpt4 key购买 nike

我编写了一个简单的类(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

我应该如何修复这些警告,以便代码编译干净且正确?

最佳答案

添加泛型:

WeakHashMap<String, WeakReference<String>>

删除转换:

(WeakReference)m_pool.get(s);

和:

(String)reference.get()

看起来像:

m_pool.get(s);

reference.get()

分别。

关于Java未经检查的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11982715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com