黑马程序员技术交流社区
标题: 枚举的values()方法 [打印本页]
作者: 鲁中需 时间: 2012-10-25 18:57
标题: 枚举的values()方法
使用枚举,我们经常使用values()方法,但是我查看JDK文档中的Enum类中并不存在这个方法,在Object类中也不存在该方法,有疑问,求解。
作者: 冯纪纲 时间: 2012-10-25 19:28
估计是你没有在意Enum类和enum关键字的不同,下面做一个例子,你就会发现其中的区别了。
首先写一个enum类:
public enum MyEnum {
male, female
}
然后在cmd中到该类的目录下,
执行:javap MyEnum 进行反编译一下,如图:
可以很清楚的看到,其实JVM是将enum变成一个继承Enum的类,他进行了一系列的操作。
-
未命名.JPG
(25.24 KB, 下载次数: 74)
作者: 王得新 时间: 2012-10-25 19:50
那个values()是个静态方法,是编译时生成的 ,并非继承自 java.lang.Enum,
也看到了三楼反编译的图片了,如果values方法是继承自Enum的话,也不会在图片中有"public static MyEnum[] values();"
(因为子类继承父类的话,父类中的方法在子类中是看不到的啊,可是反编译却看到了,所以说values这个方法是编译时产生的)
作者: 唐进 时间: 2012-10-25 20:05
楼上说父类的方法子类看不到,我不是很认可,父类的方法就是给子类去继承和重写的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |