Pub*_*nda 1 java generics inheritance
我问了很多与此相关的问题,但无法解决我的问题。
这是我的问题。
我有一个父抽象类。
public abstract class Parent{ }
Run Code Online (Sandbox Code Playgroud)
我还有另外两个子类,它们是从上面的父类扩展而来的。
public class ChildOne extends Parent{}
public class ChildTwo extends Parent{}
Run Code Online (Sandbox Code Playgroud)
在另一堂课中,我使用这三个课程,如下所示。
public class A{
public List<ExcelRecord<Parent>> getExcelRecords() {
ChildOne childone = new ChildOne();
List<ExcelRecord<ChildOne>> list = new ArrayList<>();
// some logic here
return list; // **compilation here**
}
}
Run Code Online (Sandbox Code Playgroud)
该代码产生以下编译错误:
required: List<ExcelRecord<Parent>>
provided: List<ExcelRecord<ChildOne>>
Run Code Online (Sandbox Code Playgroud)
我需要将子类型泛型返回到父类型泛型。我怎样才能实现这个目标?
请注意,此方法的返回值正在旧代码中使用,无法进行相应更改。它应该保留List<ExcelRecord<Parent>>。
在返回类型中使用通配符。该通配符将接受任何扩展父类的类
public List<ExcelRecord<? extends Parent>> getExcelRecords() {
//...
}
Run Code Online (Sandbox Code Playgroud)
请随时查看Java 泛型常见问题解答以了解更多详细信息