A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lwy0319 高级黑马   /  2014-3-27 04:11  /  1161 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在API下找enum里没有values(),从它上面的父类和接口也没有找到此方法,在哪儿能找到呢?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

3 个回复

倒序浏览
java.lang.annotation.ElementType类下(public enum ElementType extends Enum<ElementType>),用javap命令查看编译后的内容 貌似可以看到~

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
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. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
朱神必 + 2

查看全部评分

回复 使用道具 举报
谢啦,收获颇丰啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马