我正在开发一个Java Springframework项目并使用JUnit4来测试它。
我的类实现Comparable并覆盖compareTo方法。
在我的测试中,当我做
时@Test
Class<myClass> m = myClass.class;
Method[] methods = m.getDeclaredMethods();
assertEquals(5, methods.length);
即使myClass中有5个方法,此测试也失败。当我查看Eclipse调试器时,我看到compareTo方法被调用两次。
我找不到这种行为的解释。为什么会这样?
答案 0 :(得分:5)
编译器为compareTo()
该机制得到了很好的解释in Angelika Langer's Generics FAQ: What is a bridge method?:
什么是桥接方法?
编译器的合成方法 在类型的过程中生成 擦除。有时需要它 类型扩展或实现 参数化类或接口。该 编译器插入桥接方法 参数化超类型的子类型 确保子类型的工作方式 预期