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

Ste*_*lth 3 java generics reflection spring junit4

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

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

在我的测试中,当我这样做

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

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

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

Sea*_*oyd 5

编译器为其生成桥接方法 compareTo()

在Angelika Langer的Generics常见问题中解释了这种机制:什么是桥接方法?:

什么是桥接方法?

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