2011-06-09 25 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