我是一名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>();
我遵循着相同的基本原则,有人可以帮忙解释一下为什么它不起作用以及我该如何解决吗?
答案 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
本身。