Я хочу получить каждый экземпляр для каждого объекта, я должен проверить, является ли один элемент экземпляром объекта, а затем получить значение, которое у меня есть:

@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, а другие нет. Мне нужно получить все значения, не могли бы вы подсказать мне, что я делаю не так?

0
Kaly 25 Авг 2014 в 19:05

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();
    ...;
}
3
Eran 25 Авг 2014 в 19:31
Спасибо, но это не работает :(. Мне нужно получить значения первой группы, если пользователь нажимает на нее, и значения вторых объектов, если пользователь нажимает на этот объект, и значения третьего объекта, если пользователь нажимает на это
 – 
Kaly
25 Авг 2014 в 19:12
Что вы имеете в виду под «если пользователь нажимает на нее»? В вашем вопросе ничего не говорится о каком-либо пользовательском интерфейсе или нажатии.
 – 
Eran
25 Авг 2014 в 19:15
У меня есть три объекта, и мне нужно узнать, какой объект принадлежит каждому treeItem с помощью метода onSelection () в gwt. Мне нужно сравнить, если выбранный элемент дерева принадлежит одному из этих объектов, то сделайте что-нибудь с каждым объектом
 – 
Kaly
25 Авг 2014 в 19:17
Что такое firstGroup, secondGroup, thirdGroup? Где они определены?
 – 
Eran
25 Авг 2014 в 19:20
Я не могу понять с помощью предложения if, должен ли я проверять, принадлежит ли каждый элемент к treeItem, или каждый элемент принадлежит одному из объектов?
 – 
Kaly
25 Авг 2014 в 19:21