未必是好习惯:方法的返回类型用List,而不是ArrayList

如果你使用java超过一年,你可能会这样定义方法的签名:

List getList(){
  List list = new ArrayList();
  ...
  return list; 
}

也就是说,你会让方法返回抽象的List,而不是具体的ArrayList, 这样你可以获得比较强的封装性。

然而,这种强封装同时意味着损失了一定的信息量。 当客户端拿这个list对象时,它不知道这个list是不是modifiable的,也不知道执行list.get(n)的时间复杂度是O(1) (链表)、还是O(n) (数组)。

所以,当有必要向客户端透露返回值的特性时,直接用具体类型会更好些:

ArrayList getList(){
  ArrayList list = new ArrayList();
  ...
  return list; 
}

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.