Java中Enum类下的values()方法的由来
2014-02-27 20:35
375 查看
有如下Enum类:
public enum Test{
A,B,C
}
该类下有values()方法,但查API可知道java.lang.Enum<ElementType>下根本没有这个方法,该方法在java.lang.annotation.ElementType类下(public
enum ElementType extends Enum<ElementType>),我们先看看编译后,用javap命令查看编译后的内容:
C:\>javap Test
Compiled from "Test.java"
public final class Test extends java.lang.Enum<<FONT color=#fe3824>Test> {
public static final Test A;
public static final Test B;
public static final Test C;
public static Test[] values();
public static Test valueOf(java.lang.String);
static {};
}
可以看出,貌似编译后Test是实现了java.lang.annotation.ElementType这个接口,再看其字节码:
C:\>javap -v Test
Classfile /C:/Test.class
Last modified 2012-11-22; size 782 bytes
MD5 checksum 17335f37d5ac9d7fe7d5544782cf7088
Compiled from "Test.java"
public final class Test extends java.lang.Enum
Signature: #32 // Ljava/lang/Enum;
SourceFile: "Test.java"
minor version: 0
major version: 51
flags: ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_ENUM
Constant pool:
#1 = Fieldref #4.#35 // Test.$VALUES:[LTest;
#2 = Methodref #36.#37 // "[LTest;".clone:()Ljava/lang/Objec
t;
#3 = Class #20 // "[LTest;"
#4 = Class #38 // Test
#5 = Methodref #14.#39 // java/lang/Enum.valueOf:(Ljava/lang
/Class;Ljava/lang/String;)Ljava/lang/Enum;
#6 = Methodref #14.#40 // java/lang/Enum."":(Ljava/lan
g/String;I)V
#7 = String #15 // A
#8 = Methodref #4.#41 // Test."":(Ljava/lang/String;I
)V
#9 = Fieldref #4.#42 // Test.A:LTest;
#10 = String #17
public enum Test{
A,B,C
}
该类下有values()方法,但查API可知道java.lang.Enum<ElementType>下根本没有这个方法,该方法在java.lang.annotation.ElementType类下(public
enum ElementType extends Enum<ElementType>),我们先看看编译后,用javap命令查看编译后的内容:
C:\>javap Test
Compiled from "Test.java"
public final class Test extends java.lang.Enum<<FONT color=#fe3824>Test> {
public static final Test A;
public static final Test B;
public static final Test C;
public static Test[] values();
public static Test valueOf(java.lang.String);
static {};
}
可以看出,貌似编译后Test是实现了java.lang.annotation.ElementType这个接口,再看其字节码:
C:\>javap -v Test
Classfile /C:/Test.class
Last modified 2012-11-22; size 782 bytes
MD5 checksum 17335f37d5ac9d7fe7d5544782cf7088
Compiled from "Test.java"
public final class Test extends java.lang.Enum
Signature: #32 // Ljava/lang/Enum;
SourceFile: "Test.java"
minor version: 0
major version: 51
flags: ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_ENUM
Constant pool:
#1 = Fieldref #4.#35 // Test.$VALUES:[LTest;
#2 = Methodref #36.#37 // "[LTest;".clone:()Ljava/lang/Objec
t;
#3 = Class #20 // "[LTest;"
#4 = Class #38 // Test
#5 = Methodref #14.#39 // java/lang/Enum.valueOf:(Ljava/lang
/Class;Ljava/lang/String;)Ljava/lang/Enum;
#6 = Methodref #14.#40 // java/lang/Enum."":(Ljava/lan
g/String;I)V
#7 = String #15 // A
#8 = Methodref #4.#41 // Test."":(Ljava/lang/String;I
)V
#9 = Fieldref #4.#42 // Test.A:LTest;
#10 = String #17
相关文章推荐
- Java中Enum类下的values()方法的由来
- Java中Enum类下的values()方法的由来
- java 中枚举类enum的values()方法的详解
- java enum values()方法
- Java的编译器给enum自动添加了哪些专用方法?
- Enum.GetValues 方法在 Silverlight 下实现
- 学习笔记---取得枚举项的2种方法: Enum.GetValues()-Array.GetValue()和Enum.GetNames()-Enum.Parse()
- Java Enum 常用方法
- Java Enum(枚举类型)的几种使用方法
- java枚举类Enum方法简介(valueof,value,ordinal)
- 将JAVA 中的enum类型与数据和方法关联起来
- java枚举类Enum方法简介(valueof,value,ordinal)
- Java中用enum结合testng实现数据驱动的方法示例
- java 几种常用的枚举(Enum)方法
- 14. JAVA 枚举(Enum、类集EnumMap&EnumSet 、实现接口、定义抽象方法) ----- 学习笔记
- Java枚举类Enum方法简介
- Java中的枚举与values()方法
- java枚举类Enum方法简介(valueof,value,ordinal)
- java.lang.Enum.valueOf()方法实例
- Java中Enum方法toString与ordinal方法