有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中泛型类中的超类

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

我有一个抽象类A。我还有抽象类BC扩展A。然后我有扩展BC的类

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

现在我基本上想创建一个与泛型类一起工作的方法,但只与使用类扩展B的实例一起工作

我试过这样的方法:

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

不幸的是,这不起作用。IDE希望我使用t类型或其他类型

现在是问题:
为什么这不起作用?它似乎不会引起任何问题,因为子类必须提供来自超类的所有方法
除了为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{}
}

共 (1) 个答案

  1. # 1 楼答案

    试着这样做:

    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