"return new A()"和"return a = new A()"之间的区别是什么?

Bax*_*Bax 2 java

我在许多库中看到,当返回一些结果时,使用return a = new A()(例如return entrySet = new EntrySet())而不是仅返回new EntrySet(),有什么区别?

Jon*_*eet 6

后者a在返回之前指定一个值.

如果a是局部变量,那几乎肯定无关紧要.如果a是实例(或静态)变量,则会产生可见的副作用.它有时用于一些惰性初始化,例如

private String foo;

public String getFoo()
{
    if (foo != null)
    {
        return foo;
    }
    return foo = computeFoo();
}

private String computeFoo() { .. }
Run Code Online (Sandbox Code Playgroud)

  • 只有Jon Skeet可以用错误的语言回答问题,并且仍然能够获得最多的选票:-) (7认同)
  • 问题是关于Java,而不是C#. (3认同)