返回新集合而不是现有集合实例变量

Cry*_*tal -3 java

我无法理解以下代码段:

public class Person {
   private List<Person> people = new ArrayList<Person>();

   public List<Person> getPeople() {
      return new ArrayList<Person>();
   }
}
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,也许我的条款不正确.我想我已经看到了这样的代码,其中返回了一个新集合,并且该类有一个集合实例变量.所以我想知道其含义是什么.

Nic*_*ick 7

这不是一个匿名类,它只是一个空列表.

我意识到你可能正在谈论返回一个尚未分配给命名变量的新对象,因此在这个意义上是匿名的.您给出的示例看起来可以改进 - 似乎getPeople()应该返回people变量,因为它已经初始化为空List并且使用它将节省在每次调用时创建新的空列表的开销getPeople().

既然你已经编辑了你的问题,我认为以上可能是你所要求的.


tra*_*god 6

这可以表示对接口进行编码的示例.在该示例中,ArrayList是实现细节.返回List表示客户端应该只依赖List返回对象的方法.

  • 这可能是OP所说的 - 只是使用了错误的术语. (2认同)

Col*_*ert 5

这将返回一个匿名列表:

public class Person {
   public List<Person> getPeople() {
      return new ArrayList<Person>(){};
   }
}
Run Code Online (Sandbox Code Playgroud)

确切地说,它是一个匿名的ArrayList.

匿名列表将是:

public class Person {
   public List<Person> getPeople() {
      return new List<Person>(){
          //implementing all methods required for a List.
      };
   }
}
Run Code Online (Sandbox Code Playgroud)