总也睡不醒
一个人只拥有今生今世是不够的,他还应该拥有诗意的世界
posts - 3,  comments - 5,  trackbacks - 0

我的评论

 没人理我!自己先顶一个。
 
我用Jode反编译后,TestEnum类成了这样:
  1public class TestEnum
  2{
  3    public static void main(String[] strings) {
  4    MyColor mycolor = MyColor.blue;
  5    switch (ANONYMOUS CLASS TestEnum$1.$SwitchMap$MyColor
  6        [mycolor.ordinal()]) {
  7    case 1:
  8        System.out.println("red");
  9        break;
10    case 2:
11        System.out.println("green");
12        break;
13    case 3:
14        System.out.println("blue");
15        break;
16    default:
17        System.out.println("default");
18    }

19    System.out.println(mycolor);
20    }

21}
注意看switch语句块和原文的不同。第五行出现了匿名类,这应该就是TestEnum$1.class产生的原因。再看每个case语句,red green blue变成了1 2 3。这也是枚举常量的实质。不过我又奇怪了, 枚举类型的ordinal方法API帮助上是这么写的:“返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)”。
 
所以啊,不研究不知道,一研究问题一大堆。看来我得要理解JVM和Java对枚举和匿名类的处理方式了。不过以我现在的水平,不是一时半会儿能完全想明白的。
 
那位高手能指点我一下吗?谢谢了先!
一点一滴,完善自我

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

收藏夹

搜索

  •  

最新评论