0

可能重复:
`List<Dog>` 是 `List<Animal>` 的子类吗?为什么 Java 的泛型不是隐式多态的?

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)

谢谢你的时间!

4

1 回答 1

0

但当然我得到这个警告:类型安全:从 AbstractPacket 到 E 的未经检查的强制转换

我认为该警告是有道理的,因为 E 类型无法在编译时确定,但它不会影响您的运行。

于 2012-10-24T09:51:01.380 回答