更新:这似乎与Eclipse有关,而不是与Hudson有关,因此我已相应地更新了问题。
在命令行上运行Maven时,我遇到了一些编译器错误,但我们小组中的所有开发人员在Eclipse中都可以正常工作(一些通用细节,请参见下文)。为什么会有差异,并该如何处理?
代码失败的样子如下:
299 private <T extends ProductClassDTO> List<T> convertProductClass(List<? extends ProductClassDTO> fromList) {
300 List<T> toList = new ArrayList<T>();
301 for (ProductClassDTO from : fromList) {
302 T to = convert(from);
303 toList.add(to);
304 }
305 return toList;
306 }
以下是构建服务器上的错误:
[ERROR] ...java:[302,26] type parameters of <T>T cannot be determined; no unique maximal instance exists for type variable T with upper bounds T,com.volvo.protom.util.dto.ProductClassDTO
我知道在Stack Overflow上有其他关于此问题的问答,但它们似乎不适用于这个特定的问题,因为更改为
T to = <T>convert(from)
并不能解决问题,也许我应该尝试其他方法?我猜测错误是指这个类中有多个convert
方法,而且有不止一个与之匹配。谢谢!
更新 2:这些是转换签名:
private void convert(TestObjectDTO from, TestObjectDTO to);
private <T extends TestObjectDTO> T convert(TestObjectDTO from);
private void convert(ProductClassDTO from, ProductClassDTO to);
private <T extends ProductClassDTO> T convert(ProductClassDTO from);
private void convert(TestObjectTypeDTO from, TestObjectTypeDTO to);
private <T extends TestObjectTypeDTO> T convert(TestObjectTypeDTO from);
this.<T>convert(from);
能够正常工作。 - McDowell