使用Groovy进行Java泛型和重载
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Groovy进行Java泛型和重载,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1333字,纯文字阅读大概需要2分钟。
内容图文
![使用Groovy进行Java泛型和重载](/upload/InfoBanner/zyjiaocheng/770/88170178799b49c688a6feac76dd6f92.jpg)
我使用Groovy,JUnit和EasyMock为我的Java应用程序编写单元测试.
在EasyMock中有几个重载方法capture()已被弃用,注意“因为更难删除强制执行,不能在Java 7中编译”.该方法将Capture< T>类型的对象作为参数.除其他外,存在以下方法:
>静态布尔捕获(Capture< Boolean>捕获)
>静态布尔捕获(捕获<整数>捕获)
> ……
>静态< T> T捕获(捕获< T>捕获)
在Java中不再允许这样做,但如果直接从Java调用该代码,则会调用正确的方法.例如.当你执行这段代码
Capture<MyClass> myClassCapture = new Capture<MyClass>();
mockObject.someMethod(capture(myClassCapture));
调用正确的方法(列表中的最后一个).
另一方面,如果从Groovy内部调用相同的代码,则会调用列表中的第一个方法,并在测试中出错.我认为这与Java和Groovy如何解决这些方法有关.我的假设是Java在编译时绑定方法,而Groovy试图在运行时找到该方法并采用它可以找到的任何方法(可能是第一个).
谁能准确解释这里发生了什么?这将更好地理解Java和Groovy之间的不同行为.
我通过将Groovy中的调用委托给Java方法来修复它,它将为我完成这项工作:
public class EasyMockUtils {
public static <T> T captureObject(Capture<T> captureForObject) {
return EasyMock.capture(captureForObject);
}
}
有没有更好的方法?
解决方法:
我只是使用EasyMock 3.0来解决这个问题.然而,看起来它已经通过重命名包含原始图形的所有方法并仅留下一个剩余的捕获方法而从EasyMock 3.2中解析.
有关详细信息,请查看3.2文档:http://easymock.org/api/easymock/3.2/org/easymock/EasyMock.html#capture%28org.easymock.Capture%29
内容总结
以上是互联网集市为您收集整理的使用Groovy进行Java泛型和重载全部内容,希望文章能够帮你解决使用Groovy进行Java泛型和重载所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。