我正在用键T和值Long制作HashMap,而我的remove方法(从AbstractCollection类重写)如下所示:

 public boolean remove(Object o) {
    if(denseBag.containsKey(o)){
        if(denseBag.get(o) == 1L){
            denseBag.remove(o);
        } else {
            Long removed = denseBag.get(o);
            T theO = (T) o;
            denseBag.replace(theO, removed, removed--);
        }
    } else {
        return false;
    }

我收到消息:“类型安全:未经检查从对象到T的转换”。我只想确保它可以正常运行。谢谢。

最佳答案

它会。出于遗留原因,Java在Collections中使用Object o签名。
如果那仍然困扰您,请使用@SuppressWarnings("unchecked")

但是,您还会遇到很多其他麻烦。

这将被忽略:removed--,使用--removed

10-08 03:41