ArrayList aList = new ArrayList();
List aList = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
这两者之间有什么区别,哪个更好用,为什么?
Ric*_*ich 21
List是一个接口,而ArrayList是该接口的一个实现.
第二个更好,因为这意味着您可以稍后更改ArrayList以用于List的另一个实现,而无需更改应用程序的其余部分.出于性能原因,或者由于您已选择/将要选择的List实现的行为的其他方面,您可能希望这样做.
自Java 1.5以来,两者都被弃用.
它应该是:
List<String> list = new ArrayList<String>();
// or whatever data type you are using in your list
Run Code Online (Sandbox Code Playgroud)
请阅读Joshua Bloch的Effective Java,特别是这两个项目:
顺便说一下,如果你使用Guava,你有一个工厂方法来构造一个ArrayList,所以你不必重复type参数:
List<String> list = Lists.newArraylist();
Run Code Online (Sandbox Code Playgroud)
List<T>是接口,其中ArrayList<T>是类,这个类实现List<T>接口.
我更喜欢第二种形式,它更通用,即如果你不使用特定的方法,ArrayList<T>你可以将它的类型声明为接口List<T>类型.使用第二种形式,将实现更改ArrayList<T>为实现List<T>接口的其他类将更容易.
编辑:
由于许多SO用户评论两种形式可以是任何接受List<T>或方法的参数ArrrayList<T>.但是,当我声明方法时,我更喜欢接口:
void showAll(List <String> sl) ...
Run Code Online (Sandbox Code Playgroud)
并使用:
void showAllAS(ArrayList <String> sl) ...
Run Code Online (Sandbox Code Playgroud)
只有当我的方法使用特定的方法时ArrayList<T>,比如ensureCapacity().
对我们应该使用的信息的响应List<T>而不仅仅是List非常好(当然如果我们不使用古代Java).
| 归档时间: |
|
| 查看次数: |
3067 次 |
| 最近记录: |