无法将ArrayList类转换为接口的ArrayList

时间:2017-12-11 14:18:49

标签: java android arraylist casting

代码结构

public interface ListItem
public abstract class Device implements ListItem
public class DeviceList extends ArrayList<Device>
public class ListAdapter extends BaseAdapter{
...
    public ArrayList<ListItem> items;
...
    }

我想将DeviceList传递给ListAdapter,但不能将DeviceList转换为ArrayList&lt;列表项取代。那是为什么?

如果Device实现了ListItem,而DeviceList是Device的数组列表,我是不是可以投出它?

我这样试试:

ArrayList<ListItem> list2 = (ArrayList<ListItem>) device_list;

1 个答案:

答案 0 :(得分:4)

这是一个常见的误解。虽然Device是ListItem,但是List of Devices不是ListItem的列表。 顺便说一下,这已经得到了解答,例如参见How to cast List<Object> to List<MyClass>How do you cast a List of supertypes to a List of subtypes?