Java 1.7 if语句关于声明和初始化具有if语句作用域的变量的结果



雅赫-这很难解释。有可能这样做吗:

static String nullOrLastname(String name)
{
    if(name.equals("jonas")) return "marshen";
    return null;
} 
if( (String lastname=nullOrLastname("jonas")) != null)
{   
     System.out.println(lastname);
}

这是有效的,但丑陋等

for(String  lastname = nullOrLastname("jonas");lastname !=null;lastname=null)
{
    System.out.println(lastname);
}

有更好的方法吗?我想做的事叫什么名字?我在标题中用对词了吗?

如果您不希望范围泄漏,我会执行以下操作。

{
    String lastname = nullOrLastname("jonas");
    if (lastname != null)
        System.out.println(lastname);
}

在Java8中,您将使用一个Optional,并将其转换为一行代码。

static Optional<String> nullOrLastname(String name)    {
    return Optional.ofNullable("jonas".equals(name) ? "marshen" : null);
}
public static void main(String[] args) {
    nullOrLastname("jonas").ifPresent(System.out::println);
}

您需要首先声明变量:

String lastname;
if( (lastname=nullOrLastname("jonas")) != null)
{   
     System.out.println(lastname);
}

最新更新