我可以声明一个具有泛型形式的类,然后将子类强制转换为在java中声明为泛型的类型

时间:2013-10-26 08:35:42

标签: java generics subclass

好的,这就是我的意思。 我有一个声明为

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

我有

public class Soldier extends Agent<Platoon>

public class Platoon extends Human

有没有办法将人类施放给士兵?或者使用方法instanceof这两种类型?甚至在Human中有一个Soldier参数?

3 个答案:

答案 0 :(得分:1)

您必须具有不同的类型层次结构:

SuperAgent<E> <= Agent<E extends Human> <= Soldier
Human <= Platoon
  1.   

    有没有办法将人类施放给士兵?

    它们不属于同一层次结构。 Human无法成为Soldier

  2.   

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

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

  3.   

    甚至在士兵中有人参数?

    您可以,但您已将参数修改为Platoon。您必须声明Soldier之类的:

    public class Soldier<H extends Human> extends Agent<H>
    
  4. 我认为泛型的概念仍然让您感到困惑,您应该阅读a little bit of documentation

答案 1 :(得分:0)

这种关系并不是很清楚。 人是一个阶级,代理人也是另一个阶级和士兵。 同时代理人是一种人,士兵也是如此。 你可以像这样声明他们: 界面人 抽象类SuperAgent实现Human Abstarct类代理扩展了SuperAgent 阶级士兵实施人类

答案 2 :(得分:-1)

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