什么意思?在Java?

mat*_*tis 2 groovy

我有这样一段代码:

private String getUsername(PersonalAccount account) {
    User usr = (User)account?.usr
    String name = usr?.getName()
    return name
}
Run Code Online (Sandbox Code Playgroud)

在PersonalAccount类中我们有字段:

SimpleUser usr
Run Code Online (Sandbox Code Playgroud)

用户扩展了SimpleUser

这意味着什么:?在这两行?

User usr = (User)account?.usr
    String name = usr?.getName()
Run Code Online (Sandbox Code Playgroud)

Nat*_*hes 5

这不是Java,那是Groovy.如果它是Java,你将有分号结束每个语句.

该方法返回传入帐户的用户名,如果帐户为null或用户为null,则返回null.

它使用安全导航操作员.如果操作数为null,则safe-navigation运算符求值为null,否则求值为方法调用的结果.这样,如果您对可能为null的内容进行方法调用,则不必担心会出现NullPointerException.

  • @ paulsm4:错了.决定不包括在该语言中; 从Java 7开始,`?.`运算符不是该语言的一部分.编辑添加:实际上,您的*very*链接表示文档顶部:"*此功能已从Java 7中包含的最终功能列表中删除.*" (6认同)