可能重复:
Is `List<Dog>` a subclass of `List<Animal>`? Why aren’t Java’s generics implicitly polymorphic?
public abstract class AbstractServerSession<E extends AbstractPacket> {
[...]
packet = (E) PacketFactory.getPacket(packetClazz);
我收到恕我直言的错误:
Type mismatch: cannot convert from AbstractPacket to E
如果我明确声明E
是AbstractPacket
的孩子,他将如何转换?
我可以添加演员
packet = (E) PacketFactory.getPacket(packetClazz);
但当然我收到了这个警告:
Type safety: Unchecked cast from AbstractPacket to E
那么<E extends AbstractPacket>
是什么?
编辑:根据要求
public static final AbstractPacket getPacket(Class<? extends AbstractPacket> clazz)
谢谢你的时间!
答案 0 :(得分:0)
但当然我得到这个警告: 类型安全:从AbstractPacket到E
取消选中
我认为警告是有道理的,因为E类型无法在编译时确定,但它不会影响您的运行。