java - java中泛型类的父类(super class)

标签 java generics inheritance

这是我第一次来这里,但我尽力描述我的问题:

我有一个抽象类A 。我也有抽象类 BC延伸A 。然后我有类(class)扩展 BC .

现在我有一个泛型类,只接受扩展 A 的类。 (class XYZ<ABC extends A>…)

现在我基本上想创建一个与通用类一起使用的方法,但仅限于使用扩展 B 的类的实例。 .

我尝试过这样的事情:

public void method(XYZ<B> t){}

遗憾的是这没有用。 IDE 希望我具有 t 类型之一或者反之亦然。

现在问题:
为什么这不起作用?看起来这不会造成任何问题,因为子类必须提供父类(super class)的所有方法。
除了为 B 的每个子类创建一个方法或更改我想要使用的对象的类型之外,还有其他方法可以解决这个问题吗?

示例代码:

public class main {

public static void main(String[] args) {
    ArrayList<Abc> foo = new ArrayList<>();
    xyz(foo);
}
private void xyz(ArrayList<B> abs){}


private static abstract class  A{}
private static abstract class  B extends A{}
private static abstract class  C extends A{}
private static class Abc extends B{}
}

最佳答案

尝试这样:

public class Main {

    public static void main(String[] args) {
        ArrayList<Abc> foo = new ArrayList<>();
        xyz(foo);
    }

    private static <T extends B> void xyz(ArrayList<T> abs){
        System.out.print("running xyz");
    }


    private static abstract class  A{}
    private static abstract class  B extends A{}
    private static abstract class  C extends A{}
    private static class Abc extends B{}
}

看来这就是你的目标。看看here了解更多信息。

关于java - java中泛型类的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37580699/

相关文章:

java - 无法使用 Java API 将本地 csv 文件上传到 BigQuery

oop - Kotlin 类型推断失败的原因

java - int 与 int[] 区别 - 泛型内部自动装箱?

c# - 为什么 C# 数组没有 Count 属性?

c++ - 错误 : expected identifier before ‘public’ , 预期 ‘{’ 之前 ‘public’

java - char 是如何工作的以及它与英文字母有何关系?

java - 如何修改doc文档的元数据

c# - 合并具有嵌套类的同一类的两个对象

ios - Swift:UIViewController常用函数继承

java - 使用请求调度程序 JSP 发送 404