1

ok, here is what I mean. I have a class that is declared like

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

and I have

public class Soldier extends Agent<Platoon>

and

public class Platoon extends Human

is there a way to cast Human to Soldier? or use the method instanceof for these two types? or even have a Human parameter in Soldier?

4

3 回答 3

1

您必须区分类型层次结构:

SuperAgent<E> <= Agent<E extends Human> <= Soldier
Human <= Platoon
  1. 有没有办法将人类投射到士兵?

    它们不属于同一层次结构。aHuman不可能是 a Soldier

  2. 对这两种类型使用方法instanceof?

    您始终可以instanceof在对象和类之间使用。

  3. 甚至在士兵中有一个人类参数?

    您可以,但您已经将参数固定为Platoon. 您必须声明Soldier如下:

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

我认为泛型的概念仍然让您感到困惑,您应该阅读一点文档

于 2013-10-26T09:02:14.617 回答
0

关系不是很清楚。人类是一个阶级,特工是另一个阶级,士兵也是。同时代理是一种人类,士兵也是。你可以像这样声明它们:接口人类抽象类SuperAgent实现人类抽象类代理扩展超级代理类士兵实现人类

于 2013-10-26T09:06:01.900 回答
-1

要将一个类转换为另一个类,它们必须位于同一继承树上。然后你可以upcastdowncast

于 2013-10-26T08:39:33.493 回答