在java中我试图使用如下的速记变量赋值。目前owner
分配在不同的行,但我想将其放在同一行,如下所示。这不起作用 - 是不可能还是有另一条路线?
if ((User owner = search.getOwner()) instanceof User && owner.getId() != null) {
searchQuery.append("owner_id = :ownerId AND ");
queryMap.put("ownerId", owner.getId());
}
由于
答案 0 :(得分:2)
不,没有。据我所知,至少。
您可以将值分配部分(owner = search.getOwner())
放入if部分,但User owner
声明必须单独存在。
答案 1 :(得分:2)
在您的代码中,所有者在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());
}
答案 2 :(得分:1)
以下代码有什么问题,在我看来这些代码更具可读性?
User owner = search.getOwner();
if (owner instanceof User && owner.getId() != null) {
searchQuery.append("owner_id = :ownerId AND ");
queryMap.put("ownerId", owner.getId());
}
如评论中所述,getOwner返回一个User并且不需要进行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());
}
答案 3 :(得分:1)
Java中的赋值是 ExpressionStatement ,而if条件只接受 Expression 。有关权威来源,请参阅Java Language Specification。