这是我第一次来这里,但我会尽力描述我的问题:
我有一个抽象类A
。我还有抽象类B
和C
扩展A
。然后我的课程延长B
或C
。
现在我有一个通用类只接受扩展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{}
}
答案 0 :(得分: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以获取更多信息。