【问题标题】:How to cast ArrayList to SubType Of ArrayList如何将 ArrayList 转换为 ArrayList 的子类型
【发布时间】:2015-10-24 09:17:15
【问题描述】:

类结构

class Packet {}
class PacketList extends ArrayList<Packet> {} 

现在我正在尝试将 ArrayList 的对象转换为 PacketList 的对象

List<Packet>  p = new ArrayList<Packet> ();
PacketList pList = p;

但它不会起作用。请帮帮我

错误信息:

不兼容的类型:List 无法转换为 PacketList

【问题讨论】:

    标签: java arraylist casting


    【解决方案1】:

    PacketList 扩展了ArrayList&lt;Packet&gt;,这意味着新引入的或覆盖的方法可能需要并依赖于仅在新的PacketList 版本中引入的其他工件。如果它引用了仅在PacketList 中可用的实例变量怎么办? ArrayList 不会有这些实例变量,尽管您打算通过这些方法访问它们...

    不,您不能将超类的实例分配给与扩展类匹配的类型的变量。

    你反过来工作,你使用超类型作为泛型类型来分配扩展(子类)实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-05
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2021-02-21
      • 1970-01-01
      • 2019-03-15
      相关资源
      最近更新 更多