Итак, у меня есть класс Spaceship с некоторыми закрытыми переменными, одна из которых имеет LinkedHashMap другого класса и целое число, подобное этому
private LinkedHashMap<Resource, Integer> cargo;
Resource - это абстрактный класс, имеющий несколько типов ресурсов (например, ResourceBlue, ResourceRed, et c ...)
Могу ли я создать LinkedHashMap с абстрактным классом, и если да, то как я go собираюсь это сделать?
Это то, что у меня есть до сих пор:
Конструктор:
public SpaceShip() {
this.cargoHold = 0;
this.upgradeLevel = 0;
this.drone = null;
this.artifact = 0;
this.crewMembers = new ArrayList<String>() {
{
add("Captain");
add("Navigation");
add("Landing");
add("Shields");
add("Cargo");
}
};
this.cargo = new LinkedHashMap<Resource, Integer>(){
{
cargo.putIfAbsent(new ResourceAzul(), 0);
cargo.putIfAbsent(new ResourcePreto(), 0);
cargo.putIfAbsent(new ResourceVerde(), 0);
cargo.putIfAbsent(new ResourceVermelho(), 0);
}
};
}
Когда я запускаю это в своей основной (как тест):
SpaceShip ss = new SpaceShip();
System.out.println(ss);
Это просто дает мне исключение NullPointerException при первом "putIfAbsent" в конструкторе.