Я построил карту и попытаюсь поместить в нее подклассы данного класса. Проблема в том, что карта принимает некоторые из них, но не все. Пожалуйста, дайте мне знать, в чем проблема, почему некоторые подклассы не принимаются и как их исправлять. Я также старался, чтобы класс Cat и Dog расширял грызунов (поскольку здесь работает Хомяк), но это не работает. СпасибоКарта не принимает подклассы
Вот код для каждого класса:
package typeinfo.pets;
public class Pet extends Individual {
public Pet(String name) { super(name); }
public Pet() { super(); }
} ///:~
package typeinfo.pets;
public class Rodent extends Pet {
public Rodent(String name) { super(name); }
public Rodent() { super(); }
} ///:~
package typeinfo.pets;
public class Cat extends Pet {
public Cat(String name) { super(name); }
public Cat() { super(); }
} ///:~
package typeinfo.pets;
public class Hamster extends Rodent {
public Hamster(String name) { super(name); }
public Hamster() { super(); }
} ///:~
import typeinfo.pets.*;
import java.util.*;
import static net.mindview.util.Print.*;
public class PetMap {
public static void main(String[] args) {
Map<String,Pet> petMap = new HashMap<String,Pet>();
petMap.put("My Hamster", new Hamster("Bosco"));
//the two lines here cause problems "Map<String, Pet> is not
// applicable to <String, Cat>
petMap.put("My Cat", new Cat("Molly"));
petMap.put("My Dog", new Dog("Ginger"));
print(petMap);
Pet dog = petMap.get("My Dog");
print(dog);
print(petMap.containsKey("My Dog"));
print(petMap.containsValue(dog));
}
}
Есть ли статический внутренний класс с именем 'net.mindview.util.Print.Cat'? –
Здесь все выглядит отлично, поэтому я думаю, что ваша проблема лежит где-то в другом месте. Также размещение 'import net.minview.util.Print. *' Здесь не является хорошей идеей, так как это зависимость, которую не все могут встречать на своей машине. – Jagger
Просто, чтобы согласиться со всеми остальными, он должен работать нормально, если вы не импортируете то, что вам не нужно. Убедитесь, что в вашей среде IDE ссылка на 'new Cat' фактически вызывает класс, который вы ожидаете от него. – Marcelo