Я хочу получить каждый экземпляр для каждого объекта, я должен проверить, является ли один элемент экземпляром объекта, а затем получить значение, которое у меня есть:
@Override
public void onSelection(SelectionEvent<TreeItem> event) {
TreeItem item=event.getSelectedItem();
if(firstGroup instanceOf TreeItem ) {
Sun first=(Sun) item.getUserObject();
....;
}
else if(secondGroup instanceOf TreeItem) {
Wall second=(Wall) item.getUserObject();
...;
}
else if(thirdGroup instanceOf TreeItem) {
Sky third=(Sky) item.getUserObject();
...;
}
Но здесь работают только первые if, а другие нет. Мне нужно получить все значения, не могли бы вы подсказать мне, что я делаю не так?
1 ответ
Не используйте else if
, если хотите, чтобы были оценены все условия.
if(firstGroup instanceOf TreeItem ) {
Sun first=(Sun) item.getUserObject();
....;
}
if(secondGroup instanceOf TreeItem) {
Wall second=(Wall) item.getUserObject();
...;
}
if(thirdGroup instanceOf TreeItem) {
Sky third=(Sky) item.getUserObject();
...;
}
else if
имело бы смысл, если бы все условия проверяли тип firstGroup
, поскольку в этом случае только одно из них могло бы быть истинным для данного значения firstGroup
.
После еще одного взгляда имеет смысл проверить экземпляр объекта, который вы на самом деле приводите, и в этом случае else if
имеет смысл:
if (item.getUserObject() instanceOf Sun) {
Sun first=(Sun) item.getUserObject();
....;
} else if (item.getUserObject() instanceOf Wall) {
Wall second=(Wall) item.getUserObject();
...;
} else if (item.getUserObject() instanceOf Sky) {
Sky third=(Sky) item.getUserObject();
...;
}
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
firstGroup
,secondGroup
,thirdGroup
? Где они определены?