相关疑难解决方法(0)

为什么要首选Java类的接口?

PMD将报告违规行为:

ArrayList<Object> list = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)

违规是"避免使用像'ArrayList'这样的实现类型;而是使用接口".

以下行将更正违规行为:

List<Object> list = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)

为什么要使用后者List而不是ArrayList

java collections interface

71
推荐指数
4
解决办法
2万
查看次数

列表与ArrayList作为参考类型?

好的,所以我知道Set,List并且Map是接口,但是什么使得第一行代码比第二行更好?

List myArr = new ArrayList();
ArrayList myArr = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

java interface list arraylist

22
推荐指数
3
解决办法
7798
查看次数

使用Collection接口创建ArrayList对象的多态性有什么好处?

我研究了多态,并了解它可以像下面那样进行动态方法绑定.

假设类Animal是抽象类.

public class AnimalReference
{
  public static void main(String args[])
  Animal ref                 // set up var for an Animal
  Cow aCow = new Cow("Bossy"); // makes specific objects
  Dog aDog = new Dog("Rover");

  // now reference each as an Animal
  ref = aCow; ref.speak();
  ref = aDog; ref.speak();
}
Run Code Online (Sandbox Code Playgroud)

我曾经创建过ArrayList的实例,如:

ArrayList myList = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

但通常我认为人们写道:

Collection myList = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

所以我的困惑是宣称收藏的好处是什么?另外我不知道你可以在"myList"前面有"Collection"(这是一个非抽象类的接口).

为什么说这不是好习惯:

ArrayList myList = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

我阅读了Collection接口和ArrayList Java文档以及在线教程,但仍然不太清楚..有人能给我一些解释吗?

java polymorphism

8
推荐指数
1
解决办法
3951
查看次数

标签 统计

java ×3

interface ×2

arraylist ×1

collections ×1

list ×1

polymorphism ×1