班级结构
class Packet {}
class PacketList extends ArrayList<Packet> {}
现在我正在尝试将ArrayList的对象转换为PacketList的对象
List<Packet> p = new ArrayList<Packet> ();
PacketList pList = p;
但它不起作用。请帮帮我
不兼容的类型:列表无法转换为PacketList
答案 0 :(得分:1)
PacketList
扩展了ArrayList<Packet>
,这意味着新引入或覆盖可能需要的方法,并依赖于仅在新PacketList
版本中引入的其他工件。如果它引用仅在PacketList
中可用的实例变量,该怎么办?虽然您打算通过这些方法访问它们,但ArrayList
不会拥有这些实例变量...
不,您不能将超类的实例分配给与扩展类匹配的类型的变量。
您反过来工作,使用超类型作为泛型类型来分配扩展(子类)实例。