Вот мой код для Scene.java. Он имеет разные типы объектов, все из которых включены в один общий ArrayList под названием targets
. Все они используют метод toString()
, который возвращает свой идентификатор. Я хочу использовать список targets
, чтобы определить, есть ли какой-либо объект в сцене, который соответствует данному идентификатору, независимо от его типа:
ArrayList<NPC> npcs = new ArrayList<NPC>();
ArrayList<Item> items = new ArrayList<Item>();
ArrayList<EnviromentalObject> enviromental_objects = new ArrayList<EnviromentalObject>();
ArrayList<Object> targets;
public Object check_for_target(String target_name){
targets.addAll(npcs);
targets.addAll(items);
targets.addAll(enviromental_objects);
for (Object target : targets){
if (target.toString() == target_name){
return target;
}
}
return null;
Вот код в Game.java, который проверяет данный идентификатор. Если есть совпадение текущей сцены, я хочу знать тип объекта и рассматривать его как его истинный тип. Прямо сейчас у меня есть следующий код, и я знал, что это не сработает, но, возможно, это поможет мне разобраться.
Object target = current_scene.check_for_target(target_name);
if (target == null){
System.out.println(UNRECOGNIZED_TARGET_MESSAGE);
} else {
String target_type = target.getClass().getName();
target = (target_type) target;
}
Каким будет правильный способ получения типа объекта, а затем возможность использования методов этого объекта? Сейчас мне дают только методы Object
. Создать суперкласс для NPC
, Item
и EnviromentalObject
?