java – 如何使用有效的泛型声明Class.class
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何使用有效的泛型声明Class.class,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1201字,纯文字阅读大概需要2分钟。
内容图文
![java – 如何使用有效的泛型声明Class.class](/upload/InfoBanner/zyjiaocheng/814/0de6be695f144378ae43cd8010b2cb54.jpg)
注意:完全出于好奇而不是任何实际用例.
我想知道是否有办法用有效的类型参数声明Class Class对象:
Class cc1 = Class.class; //raw type
Class<Class> cc2 = Class.class; //now parameter is raw type
Class<Class<?>> cc3 = Class.class; //compile error: inconvertible types
如果Class和Class<?>是可以互换的,为什么Class< Class>和类< Class<?>>不?
编辑:该问题可以推广到嵌套原始类型参数的问题.例如:
ArrayList<ArrayList<?>> lst = new ArrayList<ArrayList>(); //same compile error
EDIT2:我应该稍微改一下这个问题:我知道
Class<?> c = Class.class;
是有效但我想知道为什么Class< Class>与Class< Class<?>>不同
解决方法:
泛型有一些非常严重的限制.在这种情况下,您无法将类型分配给Class< Class>的内部类型.因为您实际上是引用原始类型,而不是原始类型的实现.它会给你一个警告,但是你无法修复那个警告.
类<类<?>>它本身不是一个不可转换的类型,你不能直接为它分配一个类,因为它没有Class< Class< T>>类型,它的类型为Class< T>.
以另一种方式思考;尝试List< List< String>>.要创建它,您需要创建一个带有字符串列表的List.这有效,因为列表可以包含列表.
Class更像是一个原语而不是一个数据对象,所以我认为不可能创建一个Class类型为Class的Class.
编辑:关于ArrayList< ArrayList<?>>的额外问题对于Class< Class<?>>所带来的不可转换类型问题,这是一个更明显的例子.
内容总结
以上是互联网集市为您收集整理的java – 如何使用有效的泛型声明Class.class全部内容,希望文章能够帮你解决java – 如何使用有效的泛型声明Class.class所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。