我读完了整本 SCJP6 书 Sierra 和 Bates 的书,考试得分为 88%。
但是,我仍然没有听说过这种代码是如何工作的,因为它在泛型章节中没有解释:
Collections.<TimeUnit>reverseOrder()
这种泛型的用法是什么?
我在一些代码中发现了它,但从未阅读过任何相关内容。
在我看来,它可以为类型推断提供一些帮助。
我尝试过搜索相关内容,但并不容易找到(甚至 SCJP 书籍/考试中也没有!)
那么有人可以给我一个关于它如何工作的正确解释吗?所有用例等等?
Thanks
Edit感谢您的回答,但我期望更多详细信息:)所以如果有人想添加一些额外的信息:
更复杂的情况比如
- 使用类中声明的类型,我可以做类似的事情吗
Collections.<T>reverseOrder()
例如?
- Using
extends
, super
?
- Using
?
- 仅向编译器提供部分帮助(即
O.manyTypesMethod<?,MyHelpTypeNotInfered,?,?,?,?,?>()
)
它是泛型方法的显式类型规范。您始终可以这样做,但在大多数情况下不需要这样做。但是,在某些情况下,如果编译器无法自行推断泛型类型,则需要这样做。
请参阅结尾处的示例教程页面 http://docs.oracle.com/javase/tutorial/java/generics/genmethods.html.
Update:只有第一个例子是有效的。显式类型参数必须是显式的,所以没有通配符,extends
or super
那里是允许的。此外,要么显式指定每个类型参数,要么不指定任何类型参数;即显式类型参数的数量必须与被调用方法的类型参数的数量匹配。类型参数,例如T
如果在当前范围内定义良好,则允许,例如作为封闭类的类型参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)