速记变量赋值

时间:2012-04-13 11:25:39

标签: java

在java中我试图使用如下的速记变量赋值。目前owner分配在不同的行,但我想将其放在同一行,如下所示。这不起作用 - 是不可能还是有另一条路线?

    if ((User owner = search.getOwner()) instanceof User && owner.getId() != null) {
        searchQuery.append("owner_id = :ownerId AND ");
        queryMap.put("ownerId", owner.getId());
    }

由于

4 个答案:

答案 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