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