首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >速记变量赋值

速记变量赋值
EN

Stack Overflow用户
提问于 2012-04-13 19:25:39
回答 4查看 245关注 0票数 1

在java中,我尝试使用速记变量赋值,如下所示。目前,owner被分配到不同的行,但我想把它放在同一行,如下所示。这不起作用--这是不可能的,还是有其他方法?

代码语言:javascript
运行
复制
    if ((User owner = search.getOwner()) instanceof User && owner.getId() != null) {
        searchQuery.append("owner_id = :ownerId AND ");
        queryMap.put("ownerId", owner.getId());
    }

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-13 19:31:37

在您的代码中,所有者在if条件的作用域中被本地声明。尝试此代码修改

代码语言:javascript
运行
复制
User owner = null;
if ((owner = (User)search.getOwner()) instanceof User && owner.getId() != null) {
        searchQuery.append("owner_id = :ownerId AND ");
        queryMap.put("ownerId", owner.getId());
    }
票数 2
EN

Stack Overflow用户

发布于 2012-04-13 19:30:50

不,没有。至少据我所知没有。

您可以将值assign part (owner = search.getOwner())放入if部分,但User owner声明必须独立。

票数 2
EN

Stack Overflow用户

发布于 2012-04-13 19:33:03

下面的代码有什么问题,在我看来,它更具可读性?

代码语言:javascript
运行
复制
User owner = search.getOwner();
if (owner instanceof User && owner.getId() != null) {
    searchQuery.append("owner_id = :ownerId AND ");
    queryMap.put("ownerId", owner.getId());
}

正如注释中所提到的,要么getOwner返回一个用户,并且不需要instanceof测试,要么它不需要,在这种情况下,您可以编写:

代码语言:javascript
运行
复制
Object owner = search.getOwner();
if (owner instanceof User && (User) owner.getId() != null) {
    searchQuery.append("owner_id = :ownerId AND ");
    queryMap.put("ownerId", (User) owner.getId());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10139917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档