我正在开发一个Java Springframework项目,并使用JUnit4对其进行测试
我的类实现了Comparable并重写了compareTo方法。
在我的测试中,当我进行时
@Test
Class<myClass> m = myClass.class;
Method[] methods = m.getDeclaredMethods();
assertEquals(5, methods.length);
尽管myClass中正好有5个方法,但此测试失败了。当我查看Eclipse调试器时,我发现compareTo方法被调用了两次。
我找不到对这种行为的解释。为什么会发生这种情况?
编译器为compareTo()
生成一个桥接方法
Angelika Langer的Generics FAQ:什么是桥接方法?:
什么是桥接方法
编译器使用的一种合成方法在打字过程中生成擦掉有时需要类型扩展或实现参数化的类或接口。这个编译器在中插入桥接方法参数化超类型的子类型确保分型工作预期。