如何在java中传递类型列表而不是接口

如何在java中传递类型列表而不是接口,java,casting,Java,Casting,我有一个事件(接口)列表,这就是我想在方法中返回的内容 public List<Event> getEvents(){ return list;} public List getEvents(){return List;} 在类中,我需要初始化列表 List<EventImpl> list = new ArrayList<EventImpl>(); List List=new ArrayList(); 出于某种原因,我认为我可以这样做: List<

我有一个事件(接口)列表,这就是我想在方法中返回的内容

public List<Event> getEvents(){ return list;}
public List getEvents(){return List;}
在类中,我需要初始化列表

List<EventImpl> list = new ArrayList<EventImpl>();
List List=new ArrayList();
出于某种原因,我认为我可以这样做:

List<Event> list = new ArrayList<EventImpl>();
List List=new ArrayList();
但似乎我不能,所以我需要在getEvents()中使用一些施法魔法吗?如果是这样的话,是如何做到的


谢谢

如果希望
getEvents()
返回
列表
,您应该使用
List,最简单的方法是首先在方法中创建
列表

List<Event> list = new ArrayList<Event>();
但是,最好只在代码中使用
List
ArrayList
,避免使用
List
ArrayList
。这符合一般的良好实践,即您应该尽可能引用接口而不是具体类型


(或者您可以使用通配符,正如其他人所建议的那样。)

请参见此语法(ListCorrect)。它可以是直接或间接扩展事件的任何类。
List<Event> copy = new ArrayList<Event>(listOfEventImpl);