And*_*sta 10 java reflection ternary-operator
我需要在java中使用反射.据我所知,它Class clazz创建了一个表示Class对象的变量.但是,我试图Class从String使用该forName("aClassName")方法引用一个对象.我的IDE(Eclipse)似乎更喜欢Class<?> clazz用于声明变量的符号.我在其他地方多次看过这种表示法.这是什么意思?
编辑:删除了对三元运算符的引用,因为它与此问题无关.
Jon*_*eet 25
Class是一种原始类型 - 它基本上是一种通用类型,您可以将其视为根本不了解泛型.
Class<?>是使用未绑定通配符的泛型类型- 它基本上意味着" Class<Foo>对于某种类型Foo,但我不知道是什么".
类似地,您可以使用带有边界的通配符:
Class<? extends InputStream>意思是" Class<Foo>对于某种类型Foo,但我不知道它是什么,只要它InputStream或子类"
Class<? super InputStream>意思是" Class<Foo>对于某种类型Foo,但我不知道它是什么,只要它InputStream或超类"
又见Java泛型常见问题解答了很多的详细信息:
和Java语言规范:
特别是,从原始类型部分:
原始类型与通配符密切相关.两者都基于存在类型.原始类型可以被认为是通配符,其类型规则是故意不合理的,以适应与遗留代码的交互.从历史上看,原始类型先于通配符; 它们最初是在GJ中引入的,并在文章中描述了过去的未来安全:Gilad Bracha,Martin Odersky,David Stoutamire和Philip Wadler在Java编程语言中添加了通用性,参见ACM会议论文集 - 面向编程,系统,语言和应用(OOPSLA 98),1998年10月.
| 归档时间: |
|
| 查看次数: |
9547 次 |
| 最近记录: |