2011-06-09 26 views
3

我正在研究一個Java Springframework項目並使用JUnit4來測試它。JUnit的方法計數將compareTo方法計數兩次。爲什麼?

我的類實現了Comparable並重寫了compareTo方法。

在我的測試,當我做

@Test 
Class<myClass> m = myClass.class; 
Method[] methods = m.getDeclaredMethods(); 
assertEquals(5, methods.length); 

測試失敗即使有整整5種方法MyClass的。當我查看Eclipse調試器時,發現compareTo方法被調用兩次。

我找不到這種行爲的解釋。爲什麼會發生?

+0

如果我們看到類文件,這將有所幫助。隨意省略邏輯 – Woot4Moo 2011-06-09 14:18:48

+0

告訴我們你的班級 – Bozho 2011-06-09 14:19:35

+0

添加了一些標籤,似乎與我更相關 – 2011-06-09 14:28:51

回答

5

編譯器爲compareTo()

bridge方法的機制是很好的解釋in Angelika Langer's Generics FAQ: What is a bridge method?

什麼是橋的方法?

編譯器 在類型 擦除過程中生成的一種合成方法。當某種類型擴展或實現參數化類或接口時,有時需要這種類型。 編譯器在 子類型的參數化超類型 中插入橋接方法,以確保子類型的工作原理爲 。

+0

+1的鏈接。 ... – 2011-06-09 14:23:04

+0

謝謝。那已經死了! – Stealth 2011-06-09 14:32:11