更新:這似乎是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