﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-总也睡不醒-最新评论</title><link>http://www.blogjava.net/lyj/CommentsRSS.aspx</link><description>&lt;font color="6666cc"&gt;
一个人只拥有今生今世是不够的，他还应该拥有诗意的世界
&lt;/font&gt;</description><language>zh-cn</language><pubDate>Thu, 28 Feb 2008 02:07:15 GMT</pubDate><lastBuildDate>Thu, 28 Feb 2008 02:07:15 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: 提问：使用枚举的类中为何会出现一个匿名类？</title><link>http://www.blogjava.net/lyj/archive/2007/08/08/135032.html#135233</link><dc:creator>总也睡不醒</dc:creator><author>总也睡不醒</author><pubDate>Wed, 08 Aug 2007 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/lyj/archive/2007/08/08/135032.html#135233</guid><description><![CDATA[<div><img src="/CuteSoft_Client/CuteEditor/images/face3.gif" align=absMiddle border=0><img src="/CuteSoft_Client/CuteEditor/images/face2.gif" align=absMiddle border=0>&nbsp;没人理我！<img src="/CuteSoft_Client/CuteEditor/images/emfist.gif" align=absMiddle border=0>自己先顶一个。</div>
<div>&nbsp;</div>
<div>我用Jode反编译后，TestEnum类成了这样：</div>
<div>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp; 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;TestEnum<br></span><span style="COLOR: #008080">&nbsp; 2</span><span style="COLOR: #000000"><img id=Codehighlighter1_22_432_Open_Image style="DISPLAY: inline" onclick="this.style.display='none'; Codehighlighter1_22_432_Open_Text.style.display='none'; Codehighlighter1_22_432_Closed_Image.style.display='inline'; Codehighlighter1_22_432_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_22_432_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_432_Closed_Text.style.display='none'; Codehighlighter1_22_432_Open_Image.style.display='inline'; Codehighlighter1_22_432_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_22_432_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif"></span><span id=Codehighlighter1_22_432_Open_Text style="DISPLAY: inline"><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp; 3</span><span style="COLOR: #000000"><img id=Codehighlighter1_70_430_Open_Image style="DISPLAY: inline" onclick="this.style.display='none'; Codehighlighter1_70_430_Open_Text.style.display='none'; Codehighlighter1_70_430_Closed_Image.style.display='inline'; Codehighlighter1_70_430_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_70_430_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_70_430_Closed_Text.style.display='none'; Codehighlighter1_70_430_Open_Image.style.display='inline'; Codehighlighter1_70_430_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main(String[]&nbsp;strings)&nbsp;</span><span id=Codehighlighter1_70_430_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif"></span><span id=Codehighlighter1_70_430_Open_Text style="DISPLAY: inline"><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp; 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;MyColor&nbsp;mycolor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MyColor.blue;<br></span><span style="COLOR: #008080">&nbsp; 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">&nbsp;(ANONYMOUS&nbsp;CLASS&nbsp;TestEnum$</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.$SwitchMap$MyColor<br></span><span style="COLOR: #008080">&nbsp; 6</span><span style="COLOR: #000000"><img id=Codehighlighter1_183_394_Open_Image style="DISPLAY: inline" onclick="this.style.display='none'; Codehighlighter1_183_394_Open_Text.style.display='none'; Codehighlighter1_183_394_Closed_Image.style.display='inline'; Codehighlighter1_183_394_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_183_394_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_183_394_Closed_Text.style.display='none'; Codehighlighter1_183_394_Open_Image.style.display='inline'; Codehighlighter1_183_394_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[mycolor.ordinal()])&nbsp;</span><span id=Codehighlighter1_183_394_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif"></span><span id=Codehighlighter1_183_394_Open_Text style="DISPLAY: inline"><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp; 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">&nbsp; 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">red</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp; 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">green</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">blue</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">default</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(mycolor);<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
</div>
<div>注意看switch语句块和原文的不同。第五行出现了匿名类，这应该就是TestEnum$1.class产生的原因。再看每个case语句，red green blue变成了1 2 3。这也是枚举常量的实质。不过我又奇怪了， 枚举类型的ordinal方法API帮助上是这么写的：&#8220;返回枚举常量的序数（它在枚举声明中的位置，其中<strong>初始常量序数为零</strong>）&#8221;。</div>
<div>&nbsp;</div>
<div>所以啊，不研究不知道，一研究问题一大堆。看来我得要理解JVM和Java对枚举和匿名类的处理方式了。不过以我现在的水平，不是一时半会儿能完全想明白的。</div>
<div>&nbsp;</div>
<div>那位高手能指点我一下吗？谢谢了先！</div>
<img src ="http://www.blogjava.net/lyj/aggbug/135233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyj/" target="_blank">总也睡不醒</a> 2007-08-08 14:13 <a href="http://www.blogjava.net/lyj/archive/2007/08/08/135032.html#135233#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>