JUnit的方法计数对compareTo方法进行两次计数。为什么?

时间:2011-06-09 14:16:44

标签: java spring generics reflection junit4

我正在开发一个Java Springframework项目并使用JUnit4来测试它。

我的类实现Comparable并覆盖compareTo方法。

在我的测试中,当我做

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

即使myClass中有5个方法,此测试也失败。当我查看Eclipse调试器时,我看到compareTo方法被调用两次。

我找不到这种行为的解释。为什么会这样?

1 个答案:

答案 0 :(得分:5)

编译器为compareTo()

生成桥接方法

该机制得到了很好的解释in Angelika Langer's Generics FAQ: What is a bridge method?

  

什么是桥接方法?

     

编译器的合成方法   在类型的过程中生成   擦除。有时需要它   类型扩展或实现   参数化类或接口。该   编译器插入桥接方法   参数化超类型的子类型   确保子类型的工作方式   预期