当前位置: 首页 > 面试题库 >

Java 列表与ArrayList作为参考类型?

黄信厚
2023-03-14
问题内容

好了,所以我知道SetList并且Map是接口,但是是什么让的第一行代码的任何好于第二行?

List myArr = new ArrayList();
ArrayList myArr = new ArrayList();

问题答案:

如果你使用第一种形式,则是说你将要使用的只是List接口的功能-别无其他,尤其是它的任何实现都没有增加任何额外的内容。这意味着你可以很容易地改变所使用的实现(例如,刚刚替补LinkedList用于ArrayList在实例化),而不用担心它打破了代码的其余部分,因为你可能已经使用一些特定的ArrayList



 类似资料:
  • 问题内容: 作为C ++老朋友,我设法解决了我的问题,但是我无法在这里围绕底层的Java机制: 问题答案: 是一个接口,有点像带有C ++中某些方法的类。您无法实例化它。 但是“继承” (或用Java术语实现),因此这些引用是分配兼容的。

  • 问题内容: 我了解使用(1),可以交换List接口的实现。似乎(1)通常在应用程序中使用,而不需要它(我自己总是使用它)。 我想知道是否有人使用(2)? 另外,这种情况实际需要多久(并且我可以举个例子),实际需要使用(1)而不是(2)(即,其中(2)不足以..除了对接口和最佳实践进行编码等之外) 问题答案: 几乎总是首选而不是首选,因为例如,可以将其转换为一个LinkedList而不会影响其余代码

  • 你好,我有两个类:Person类和Employee类,它们扩展了Person 我想写一个函数,将添加人到下界参数化列表 但是eclipse不允许它,错误消息是:“类型列表中的方法add(capture#1-of?super Employee)不适用于参数(Person)

  • 问题内容: 为何以上行失败: 无法实例化类型 但这一项有效: 问题答案: 正确的方法是: 通过其接口()引用对象 使用其具体类型()实例化对象(无法实例化接口)

  • 我们已经讨论了如何使用指针实现call by reference概念。 这是另一个通过引用调用的例子,它使用C ++引用 - #include <iostream> using namespace std; // function declaration void swap(int& x, int& y); int main () { // local variable declaratio

  • 问题内容: 我已经进行了很多编程工作,最近开始学习更多纯粹的计算机科学主题(用于工作面试)。 我知道Array和LinkedList数据结构之间的区别,但是现在我已经开始使用Java,我看到了这个ArrayList,在概念上我遇到了麻烦。 网络搜索仅真正向我展示了如何使用它们以及何时使用它们(每种优点),但是没有任何东西可以回答我的问题: 什么是ArrayList?我的假设是,它是一个维护对每个元