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

时间:2010-09-11 19:11:40

标签: java

我无法理解以下代码段:

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

   public List<Person> getPeople() {
      return new ArrayList<Person>();
   }
}

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

3 个答案:

答案 0 :(得分:7)

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

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

既然您已经编辑过您的问题,我认为以上内容可能就是您的要求。

答案 1 :(得分:6)

这可能代表coding to the interface的一个例子。在示例中,ArrayList是一个实现细节。返回List表示客户端应该只依赖返回对象的List方法。

答案 2 :(得分:5)

这将返回一个匿名列表:

public class Person {
   public List<Person> getPeople() {
      return new ArrayList<Person>(){};
   }
}

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

匿名名单将是:

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