如何修复这个对 hashmap.get 的可疑调用

3 java hashmap

所以这是我的 HashMap

        HashMap<Literal, Double> literalHashMap = new HashMap<>();
        for(Literal literal : literalHashSet) {
            if(literal.isTrue(node.state)){ literalHashMap.put(literal, 0.0);}
            else{literalHashMap.put(literal, Double.MAX_VALUE);}
        }
Run Code Online (Sandbox Code Playgroud)

那么当我这样做时

literalHashMap.put((Literal)proposition, updatedCost);
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时

cost += literalHashMap.get(proposition)
Run Code Online (Sandbox Code Playgroud)

我看到一条警告说对 hashmap.get 的可疑调用

知道如何解决这个问题吗?

谢谢你

Hig*_*gig 8

之所以说可疑调用,是因为您传递了一个LiteralObject 作为键(literalHashMap.put((Literal)proposition, updatedCost);您降低了命题,因此它变成了一个Literal对象)。所以,我可以假设这proposition不是一个Literal对象。但是,您将proposition作为 的键传递给HashMap,这完全是一种不同类型的对象。为了解决这个问题:cost += literalHashMap.get((Literal) proposition);。或者,节省了微小的时间位:

Literal lit = (Literal) proposition;
literalHashMap.put((lit, updatedCost);
cost += literalHashMap.get(list);
Run Code Online (Sandbox Code Playgroud)

避免向下转型两次。