1

わかりました、これが私が言いたいことです。次のように宣言されたクラスがあります

public abstract class Agent<E extends Human> extends SuperAgent<E>{
}

そして、私が持っています

public class Soldier extends Agent<Platoon>

public class Platoon extends Human

人間を兵士にキャストする方法はありますか? instanceofまたはこれら2つのタイプのメソッドを使用しますか? またはHumanパラメータを持っていますSoldierか?

4

3 に答える 3

1

タイプ階層を区別する必要があります。

SuperAgent<E> <= Agent<E extends Human> <= Soldier
Human <= Platoon
  1. 人間を兵士にキャストする方法はありますか?

    それらは同じ階層に属していません。Humana が である可能性はありませんSoldier

  2. これらの 2 つのタイプに対してメソッド instanceof を使用しますか?

    instanceofオブジェクトとクラスの間でいつでも使用できます。

  3. または、ソルジャーに人間のパラメーターがありますか?

    できますが、既にパラメーターを に修正していますPlatoonSoldier次のように宣言する必要があります。

    public class Soldier<H extends Human> extends Agent<H>
    

ジェネリックの概念はまだ混乱していると思います。少しドキュメントを読む必要があります。

于 2013-10-26T09:02:14.617 に答える
0

関係ははっきりしていません。人間はクラス、エージェントは別のクラスであり、兵士でもあります。一方、エージェントは一種の人間であり、兵士もそうです。次のように宣言できます。

于 2013-10-26T09:06:01.900 に答える
-1

あるクラスを別のクラスにキャストするには、それらが同じ継承ツリーにある必要があります。upcastその後、またはすることができますdowncast

于 2013-10-26T08:39:33.493 に答える