我正在从Maven 2.2.1迁移到3.3.3并且出现错误似乎部分是由于奇怪的设计造成的。行发生异常:
DataSource ds = service.generatePdfDocument(dataBean.getModel(), getFormName() + "_A0024", OUTPUT_FILE_NAME, parameters);
使用该方法的第一个参数。 New Maven说:
no suitable method found for generatePdfDocument(java.lang.Object,java.lang.String,java.lang.String,java.util.Map<java.lang.String,java.lang.Object>)
有两种方法符合此描述,仅在第一个参数的类型上有所不同:
public DataSource generatePdfDocument(EkMessage pModel, String pFormName, String pOutputFileName, Map<String, Object> parameters) throws IOException, CloneNotSupportedException {
return this.generatePdfDocument(pModel.getXml(), pFormName, pOutputFileName, parameters);
}
和
public DataSource generatePdfDocument(MessageType pMessage, String pFormName, String pOutputFileName, Map<String, Object> parameters) throws IOException, CloneNotSupportedException {
LOG.debug("Generating pdf document... ");
...
}
这样第一种方法就是调用第二种方法。但是,Maven不希望接受这两个中的任何一个,因为dataBean.getModel()是泛型的(dataBean扩展了DetailData):
@Getter
@Setter
public abstract class DetailData<T extends Object> extends GeneralDataBean {
private static final Logger LOG = LoggerFactory.getLogger(DetailData.class);
private T model;
...
}
Maven 2.2.1曾经没问题,但Maven 3.3.3失败了。我想知道在不使用instanceOf()的情况下重构代码的最佳方法是什么。