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方法被调用两次.
我找不到这种行为的解释.为什么会这样?
编译器为其生成桥接方法 compareTo()
在Angelika Langer的Generics常见问题中解释了这种机制:什么是桥接方法?:
什么是桥接方法?
编译器在类型擦除过程中生成的合成方法.当类型扩展或实现参数化类或接口时,有时需要它.编译器在参数化超类型的子类型中插入桥接方法,以确保子类型按预期工作.
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |