Java 速记变量赋值

Java 速记变量赋值,java,Java,在java中,我尝试使用如下所示的速记变量赋值。目前,owner被分配到另一行,但我想把它放在同一行,如下所示。这不起作用-这是不可能的还是有其他路线 if ((User owner = search.getOwner()) instanceof User && owner.getId() != null) { searchQuery.append("owner_id = :ownerId AND "); queryMap.put("own

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

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

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


您可以将赋值部分
(owner=search.getOwner())
放入if部分,但是
用户所有者声明必须独立进行。

不,没有。至少据我所知


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

在代码中,所有者在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());
    }

在代码中,所有者在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());
    }

在我看来,下面的代码可读性更好,有什么问题吗

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());
}

在我看来,下面的代码可读性更好,有什么问题吗

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());
}

Java中的Assignment是ExpressionStatement,而if条件只接受表达式。请参阅以获取权威源。

Java中的Assignment是一个ExpressionStatement,而if条件只接受一个表达式。请参阅获取权威源代码。

这很有帮助,但我希望完全删除那里的第一行代码。可能OP遇到的问题(尽管没有实际说明)是代码无法编译。需要在单独的文件上声明所有者line@Webnet:那么你不能。语法不允许这样做。这很有帮助,但我希望完全消除那里的第一行代码。可能OP遇到的问题(尽管没有实际说明)是代码无法编译。需要在单独的文件上声明所有者line@Webnet:那么你不能。语法不允许这样做。检查
User
类型的变量中存储的对象是否是
instanceof User
有点奇怪。除非变量包含null,否则Java将只允许此测试为true的对象,因此用户的
实例
测试可以更简单地表示为
!=null
检查存储在
User
类型的变量中的对象是否为
instanceof User
有点奇怪。除非变量包含null,否则Java将只允许此测试为true的对象,因此用户的
实例
测试可以更简单地表示为
!=null
I guess search.getOwner()返回对象,因此您应该通过(用户)搜索隐式指向返回的类型。getOwner()否则检查所有者实例的意义是什么?I guess search.getOwner()返回对象,因此您应该通过(用户)搜索隐式指向返回的类型。getOwner()否则,检查所有者实例有什么意义?