这是我第一次来这里,但我会尽力描述我的问题:
我有一个抽象课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{}
}
像这样尝试:
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{}
}
似乎是您的目标。看看这里获取更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句