黑马程序员技术交流社区

标题: 关于枚举 [打印本页]

作者: lwy0319    时间: 2014-3-27 04:11
标题: 关于枚举
我在API下找enum里没有values(),从它上面的父类和接口也没有找到此方法,在哪儿能找到呢?
作者: zhuyunfei00000    时间: 2014-3-27 08:00
java.lang.annotation.ElementType类下(public enum ElementType extends Enum<ElementType>),用javap命令查看编译后的内容 貌似可以看到~
作者: 冯鸿昌    时间: 2014-3-29 18:46
Enum 的values() 方法应该是在编译的过程中动态生成的。
如下代码所示:
  1. //申明一个ENUM
  2. enum SimpleEnum {
  3.          ONE,TWO;
  4. }
  5. //经过jad反编译后的结果
  6. final class SimpleEnum extends Enum
  7. {

  8.     private SimpleEnum(String s, int i)
  9.     {
  10.         super(s, i);
  11.     }

  12.     public static SimpleEnum[] values()
  13.     {
  14.         SimpleEnum asimpleenum[];
  15.         int i;
  16.         SimpleEnum asimpleenum1[];
  17.         System.arraycopy(asimpleenum = ENUM$VALUES, 0, asimpleenum1 = new SimpleEnum[i = asimpleenum.length], 0, i);
  18.         return asimpleenum1;
  19.     }

  20.     public static SimpleEnum valueOf(String s)
  21.     {
  22.         return (SimpleEnum)Enum.valueOf(uc/classtest/SimpleEnum, s);
  23.     }

  24.     public static final SimpleEnum ONE;
  25.     public static final SimpleEnum TWO;
  26.     private static final SimpleEnum ENUM$VALUES[];

  27.     static
  28.     {
  29.         ONE = new SimpleEnum("ONE", 0);
  30.         TWO = new SimpleEnum("TWO", 1);
  31.         ENUM$VALUES = (new SimpleEnum[] {
  32.             ONE, TWO
  33.         });
  34.     }
  35. }
复制代码

作者: lwy0319    时间: 2014-3-29 22:18
谢啦,收获颇丰啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2