java无界通配符的应用?
enum Search
{
HITHER , YON
}
public class UpCastEnum
{
public static void main(String[] args)
{
Search[] vals = Search.values() ;
Enum e = Search.HITHER ;
for(Enum en : e.getClass().getEnumConstants())
{
}
/*
如果改写成这样就会报错
Class<?> clazz = e.getClass() ;
for(Enum en : clazz.getEnumConstants())
{
}
*/
}
}
一开始我以为是编译器的自动优化, 于是将jdk版本从1.8降回了1.6, 发现未注释的代码仍然编译正确, 这个是怎么回事呢? 一样是无界通配符, 只是添加了中间变量, 产生的结果却不同呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个就没问题
如果指定了
<? extends Enum>
,由Class<T>
中定义的T[] getEnumConstants()
可以明确返回值是T
类型的,上例就是Enum
。如果没指定,就是Object
类型的,所以可以