java列表创建方法的差异
这样定义arraylist有什么区别:java列表创建方法的差异,java,Java,这样定义arraylist有什么区别: List list = new LinkedList(); 像这样 LinkedList list = new LinkedList(); 其中一个变量的类型使用。另一个使用类型 一般来说,最好对变量类型使用接口类型,因为它们更具可移植性,并且生成的代码也不太紧凑。这两种方法都有效。区别在于List是一个接口,LinkedList是一个实现。使用接口被认为是一种更好的做法,因为您可以在以后轻松地切换实现。这称为接口编码。它有一定的好处。根据你的问题,
List list = new LinkedList();
像这样
LinkedList list = new LinkedList();
其中一个变量的类型使用。另一个使用类型
一般来说,最好对变量类型使用接口类型,因为它们更具可移植性,并且生成的代码也不太紧凑。这两种方法都有效。区别在于
List
是一个接口,LinkedList
是一个实现。使用接口被认为是一种更好的做法,因为您可以在以后轻松地切换实现。这称为接口编码。它有一定的好处。根据你的问题,我认为你对这门语言还不熟悉
根据java world,以下是一些好处
设计:可以快速指定对象的方法并
发布给所有受影响的开发人员开发:Java编译器
保证接口的所有方法都是通过
签名正确,并且对接口的所有更改都是正确的
其他开发人员可以立即看到集成:有
能够快速将类或子系统连接在一起,因为
他们完善的接口测试:接口帮助隔离
错误,因为它们将可能的逻辑错误的范围限制在给定的范围内
方法子集
这是开始阅读的好地方第一个声明了一个列表,并使用列表接口的新LinkedList具体实现对其进行初始化。代码的其余部分并不关心具体的实现。唯一重要的是它是一个列表。如果您后来意识到ArrayList更高效,那么只需更改初始化即可 第二个声明一个LinkedList,并用一个新的LinkedList初始化它。代码的其余部分知道它是一个LinkedList,并且可以使用LinkedList中不在列表中的方法。如果您后来意识到ArrayList更高效,那么您可能需要更改其余的代码 第一种应该是首选的:尽可能使用最通用的类型,并将代码转换为接口,而不是实现 此外,您不应使用原始类型,而应始终使用泛型类型:
List<String> list = new LinkedList<String>();
List List=newlinkedlist();
正如其他答案所建议的,List是接口,LinkedList是实际的实现类型。例如,如果您后来决定使用ArrayList,可以键入:
List list = new ArrayList();
因为ArrayList声明了接口列表。缺点是,如果您想稍后调用ArrayList/LinkedList/(包含不在列表中的方法的其他类名)中不属于列表接口的任何方法(这可能不会成为问题),则必须检查它是否确实是ArrayList等,并将其转换为这些类型。像这样:
ArrayList arrayList = (ArrayList) list;
*只有在检查它是否真的是ArrayList之后,否则抛出异常 首先,arraylist和arraylist都不是,另外还有一个提到泛型——我整天都在与10年前的遗留代码作斗争,这是最糟糕的:Vector foo=new Vector();