0

重複の可能性:
List<Dog> は List<Animal> のサブクラスですか? Java のジェネリックが暗黙のうちにポリモーフィックではないのはなぜですか?

public abstract class AbstractServerSession<E extends AbstractPacket> {
[...]
packet = (E) PacketFactory.getPacket(packetClazz);

IMHOが意味をなさないというこのエラーが表示されます:

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

しかし、もちろん、この警告が表示されます: Type safety: Unchecked cast from AbstractPacket to E

コンパイル時に E タイプを決定できないため、警告は理にかなっていると思いますが、実行には影響しませんでした。

于 2012-10-24T09:51:01.380 に答える