abstract class NodekaClass {
abstract HashMap getBuffs();
abstract void setBuffs(HashMap<String, Boolean> buffs);
}
class Barbarian extends NodekaClass {
public HashMap <String, Boolean> buffs;
@Override
public HashMap getBuffs() {
return this.buffs;
}
}
Теперь вопрос .. если я пытаюсь сделать это:Перебор вызова метода из коллекции конкретизированных классов
for (NodekaClass pet : activePets) {
for (String s : pet.getBuffs().keySet()) {
}
}
Он говорит, что я должен бросить S в качестве родового объекта и выиграл» t позвольте мне получить доступ к любому из методов String.
Я мог бы сделать это приведение типа, как ...
for (NodekaClass pet : activePets) {
for (Object o : pet.getBuffs().keySet()) {
if ("Test".equals((String) o))
{
}
}
}
Но это неуклюжее. Есть ли лучший способ итерации в этой ситуации?
Что вы ожидаете, чтобы в вашем HashMap? Ключ всегда будет строкой? Что вы ожидаете от ценностей? – pmartin8