代码结构
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;
答案 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?