在java中,我尝试使用速记变量赋值,如下所示。目前,owner
被分配到不同的行,但我想把它放在同一行,如下所示。这不起作用--这是不可能的,还是有其他方法?
if ((User owner = search.getOwner()) instanceof User && owner.getId() != null) {
searchQuery.append("owner_id = :ownerId AND ");
queryMap.put("ownerId", owner.getId());
}
谢谢
发布于 2012-04-13 19:31:37
在您的代码中,所有者在if条件的作用域中被本地声明。尝试此代码修改
User owner = null;
if ((owner = (User)search.getOwner()) instanceof User && owner.getId() != null) {
searchQuery.append("owner_id = :ownerId AND ");
queryMap.put("ownerId", owner.getId());
}
发布于 2012-04-13 19:30:50
不,没有。至少据我所知没有。
您可以将值assign part (owner = search.getOwner())
放入if部分,但User owner
声明必须独立。
发布于 2012-04-13 19:33:03
下面的代码有什么问题,在我看来,它更具可读性?
User owner = search.getOwner();
if (owner instanceof User && owner.getId() != null) {
searchQuery.append("owner_id = :ownerId AND ");
queryMap.put("ownerId", owner.getId());
}
正如注释中所提到的,要么getOwner返回一个用户,并且不需要instanceof
测试,要么它不需要,在这种情况下,您可以编写:
Object owner = search.getOwner();
if (owner instanceof User && (User) owner.getId() != null) {
searchQuery.append("owner_id = :ownerId AND ");
queryMap.put("ownerId", (User) owner.getId());
}
https://stackoverflow.com/questions/10139917
复制相似问题