java - 检查并获取对象的值

标签 java

我想获取每个对象的每个实例,我必须检查一项是否是该对象的实例,然后获取值,我有:

@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/

相关文章:

java - 优化mysql执行时间长约4分钟的查询

javascript - 未经适当清理或验证的客户端潜在 XSS

java - Spring+MyBatis异常: Mapped Statements collection does not contain value for

java - 编译在 Android Studio 中使用的 GitHub 项目

java - 获取 long - a long 的值并将该值存储为 int?

java - 如何使用 hibernate 更新复合主键值?

java - FutureCallback 到 Observable

java - Material 设计的 GridView 中未显示标高

java - 从数千行中提取数据

java - HQL 表达式中的 Null