gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:51:20 26 4
gpt4 key购买 nike

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

我有一个抽象类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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com