如果将Component的类型设置为ReportBuilder的类型变量,它将起作用:
public interface ReportBuilder<T extends Component> { public Report buildReport(List<T> components);}public class PDFReportBuilder implements ReportBuilder<PDFComponent> { public Report buildReport(List<PDFComponent> components);}不过,您必须评估您是否真的想要ReportBuilder中的类型变量。这并不总是正确的选择。此外,如果您还希望
PDFReportBuilder.buildReport返回类型为PDFReport,则还需要将其作为类型变量(即
publicinterface ReportBuilder<T extends Component, S extends Report>)。



