我想获取每个对象的每个实例,我必须检查一项是否是该对象的实例,然后获取值,我有:
@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,而其他则不适用。我需要获取所有值,您能建议我做错了什么吗?
最佳答案
如果您希望评估所有条件,请勿使用 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();
...;
}
如果所有条件都检查 firstGroup
的类型,则 else if
才有意义,因为如果是这种情况,则只有其中一个条件为 true 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 - 检查并获取对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488896/