更新:这似乎是Eclipse相关的,而不是哈德森相关的,所以我相应的更新问题。javac编译不符
在命令行运行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
(我知道有其他问题+这个在SO答案,但他们似乎并不适用于这个特定的问题,因为更改为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);
这可能是相关的http://stackoverflow.com/questions/314572/bug-in-eclipse-compiler-or-in-javac – stacker
它是,但正如我所说的加入行302不工作在我们开发人员在Windows下使用编译器 –
“转换”方法的签名是什么? – McDowell