总也睡不醒
一个人只拥有今生今世是不够的,他还应该拥有诗意的世界
posts - 3,  comments - 5,  trackbacks - 0
先看一下代码:
 1 enum MyColor { red, green, blue}
 2 
 3 public class TestEnum {
 4 
 5     public static void main(String[] args) {
 6         MyColor m = MyColor.blue;
 7 
 8         switch(m) {
 9             case red:
10                 System.out.println("red");
11                 break;
12             case green:
13                 System.out.println("green");
14                 break;
15             case blue:
16                 System.out.println("blue");
17                 break;
18             default:
19                 System.out.println("default");
20                 break;
21         }
22 
23         System.out.println(m);
24     }
25 }
26 

TestEnum类编译后,会产生三个class文件:MyColor.class、TestEnum$1.class、TestEnum.class。

枚举就相当于一个类,所以会有MyColor.class。问题是:为什么会出现TestEnum$1.class这个匿名类。难道是枚举类中使用的red, green, blue三个值造成的。

那位大侠知道,给小弟解释一下,先谢谢了!
posted on 2007-08-07 19:03 总也睡不醒 阅读(649) 评论(2)  编辑  收藏 所属分类: JavaSE

FeedBack:
# re: 提问:使用枚举的类中为何会出现一个匿名类?
2007-08-08 14:13 | 总也睡不醒
 没人理我!自己先顶一个。
 
我用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对枚举和匿名类的处理方式了。不过以我现在的水平,不是一时半会儿能完全想明白的。
 
那位高手能指点我一下吗?谢谢了先!
  回复  更多评论
  
# re: 提问:使用枚举的类中为何会出现一个匿名类?[未登录]
2013-09-16 17:14 | ma
@总也睡不醒
百度这个问题,你的页面在第一个,呵呵,貌似我也懂了点  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
一点一滴,完善自我

<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

收藏夹

搜索

  •  

最新评论