как исправить этот подозрительный вызов hashmap.get - PullRequest
0 голосов
/ 17 апреля 2020

так что это мой 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);}
        }

тогда, когда я делаю это

literalHashMap.put((Literal)proposition, updatedCost);

, но когда я делаю это

cost += literalHashMap.get(proposition)

я вижу предупреждение подозрительный вызов hashmap.get

есть идеи, как это исправить?

спасибо

1 Ответ

1 голос
/ 17 апреля 2020

Он говорит о подозрительном вызове, потому что вы передаете объект Literal в качестве ключа (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);

Чтобы избежать удушения дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...