如何实现列表与数组列表

时间:2019-01-06 03:30:12

标签: java list arraylist

我是一名Java初学者,我知道您应该在arraylist上使用list,但是我不确定如何从arraylist更改为list。 之前

ArrayList<Homework3> hw = new ArrayList<Homework3>();

工作过,然后我尝试了:

List<Homework3> hw = new ArrayList<Homework3>();

然后我尝试通过以下方式实现List接口:

public interface List<Homework3> // inheritance not shown 
{ 
 boolean add( Homework3 x ); 
 void add( int index, Homework3 x ); 
 Homework3 get( int index ); 
 Homework3 remove( int index ); 
 Homework3 set( int index, Homework3 x ); 
 int size(); 
}

但是现在说的是不兼容的类型。我查看了其他问题和讨论,他们获得了如下代码:

List<Object> list = new ArrayList<Object>();

我遵循着相同的基本原则,有人可以帮忙解释一下为什么它不起作用以及我该如何解决吗?

2 个答案:

答案 0 :(得分:1)

您无需执行任何操作。 Java通过generics为您处理这种类型的解析。

由于List<E>是通过通用方式定义的,因此其实现者也必须如此,因此ArrayList<E>使用接口声明的相同通用类型。

要明确:
声明List<Homework3> hw = new ArrayList<Homework3>();时,在Javadoc中使用E无处不在Homework3替换。您不必为此实施任何,因为该语言已经为您服务。

答案 1 :(得分:0)

java.util.ArrayList实现了java.util.List接口。因此,在定义自己的List<Homework3>接口之后,您的代码将具有不兼容的类型。

    List<Object> list     =    new ArrayList<Object>();
//  ^^                               ^^
// your.package.List            java.util.ArrayList

您问题中的类似代码

    List<Homework3> hw  =   new ArrayList<Homework3>();
//  ^^                               ^^
// java.util.List            java.util.ArrayList

从那时起,您将早些工作,那么您就不会引入问题中提到的List界面,而是指java.util.List本身。