Java 8上的getGenericReturnType输出不正确
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 8上的getGenericReturnType输出不正确,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1004字,纯文字阅读大概需要2分钟。
内容图文
![Java 8上的getGenericReturnType输出不正确](/upload/InfoBanner/zyjiaocheng/788/acd3331a15e04f1aabb89d92be3d0ccf.jpg)
对于使用Java 8(JDK 1.8.0_71)和Mockito(版本2.0.44-beta)的特定反射调用,我得到了一个奇怪的结果.
调用以下内容:
BDDMockito.class.getMethod("given", Object.class).getGenericReturnType().getTypeName()
给出了这个错误的结果:
org.mockito.BDDMockito.org.mockito.BDDMockito$BDDMyOngoingStubbing<T>
这看起来不正确(包不存在),我没有看到其他Java类或BDDMockito的其他方法的这个问题.我认为结果应该是:
org.mockito.BDDMockito$BDDMyOngoingStubbing<T>
我得到的结果有解释吗?这是一个已知问题还是应该向Oracle报告?
解决方法:
是的,这是一个错误.它已在JDK-8054213票据中报告,目前尚未解决所有版本(包括当前的JDK 9 beta).
请注意,您可以使用更简单的示例重现它.问题在于使用嵌套类作为方法返回类型. getGenericReturnType错误地重复输出中的类名.这可以使用静态嵌套类或内部类重现.
package parent;
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(Main.class.getMethod("bar").getGenericReturnType());
// prints "parent.Main.parent.Main$Bar<T>"
}
public <T> Bar<T> bar() {
return null;
}
/*static*/ class Bar<T> {}
}
内容总结
以上是互联网集市为您收集整理的Java 8上的getGenericReturnType输出不正确全部内容,希望文章能够帮你解决Java 8上的getGenericReturnType输出不正确所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。