java - 我可以用泛型形式声明一个类,然后将子类转换为在 java 中声明为泛型的类型吗

标签 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 ?或者甚至在 Soldier 中有一个 Human 参数?

最佳答案

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

SuperAgent<E> <= Agent<E extends Human> <= Soldier
Human <= Platoon
  1. Is there a way to cast Human to Soldier?

    它们不属于同一层次结构。 人类不可能成为士兵

  2. use the method instanceof for these two types?

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

  3. or even have a Human parameter in Soldier?

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

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

我认为泛型的概念仍然让您感到困惑,您应该阅读 a little bit of documentation .

关于java - 我可以用泛型形式声明一个类,然后将子类转换为在 java 中声明为泛型的类型吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19604669/

相关文章:

java - 如何使这项工作正常工作并在退出时保存并在重新加载时恢复

java - java中对象作用域方法的静态实现

java:针对接口(interface)进行编程,但必须实例化一个具体类

objective-c - Obj-C 子类似乎无法识别继承的选择器

java - 为什么在Java中从子类访问 protected 方法时会出现编译错误?

python - 子类化装饰类

java - 使用 Canvas 在 Java 中绘图

java - 为什么在 REPL 中没有观察到通配符类型和存在类型之间指定的等价性

c# - 泛型基类覆盖非泛型基类函数模式? (。网)

c# - 将简单对象转换为简单通用的接口(interface)