`
032615
  • 浏览: 59969 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

enum原理

    博客分类:
  • java
阅读更多

java5增加了enum,其实对enum的处理很简单,编译器增加了一些功能而以。
看代码:

public enum Season{
    Spring,Summer,Autumn,Winter
}
javap -c Season
就可以看出来具体的处理了,不过直接反编译更容易理解,使用jad处理的结果。

// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name:   Season.java


public final class Season extends Enum
{

    public static final Season[] values()
    {
        return (Season[])$VALUES.clone();
    }

    public static Season valueOf(String s)
    {
        return (Season)Enum.valueOf(Season, s);
    }

    private Season(String s, int i)
    {
        super(s, i);
    }

    public static final Season Spring;
    public static final Season Summer;
    public static final Season Autumn;
    public static final Season Winter;
    private static final Season $VALUES[];

    static
    {
        Spring = new Season("Spring", 0);
        Summer = new Season("Summer", 1);
        Autumn = new Season("Autumn", 2);
        Winter = new Season("Winter", 3);
        $VALUES = (new Season[] {
            Spring, Summer, Autumn, Winter
        });
    }
}


一个从java.lang.Enum<E>继承下来的final类,没有什么特殊的地方。使用的时候
Season season = Season.Spring;
不过就是直接访问了Season类中定义的静态常量Spring而已。

其实从java 5开始加入的一些新的语法特性,都是编译器增加了处理,而对于jvm而言,基本不需要什么变化。

分享到:
评论

相关推荐

    DNS,ENUM原理介绍

    简单介绍了DNS和ENUM的原理及在IMS网络中的使用

    编译原理PL0源码(C语言版)

    编译原理PL0源码(C语言版) /*** PL0 COMPILER WITH CODE GENERATION ***/ //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //----...

    django-enumfields:Django的真实Python枚举

    该软件包可让您在Django中使用真正的Python( 样式)枚举。 安装 pip install django-enumfields 附带的工具 EnumField,EnumIntegerField from enumfields import ... EnumIntegerField工作原理相同,但是基础存储机

    编译原理实验详细指导

    typedef enum Symbol { ERR = -1, END, NUM, PLUS, MINUS, TIMES, SLASH, LPAREN, RPAREN } Symbol; 对运算符和界符只需处理种类编码即可,而对num 需要处理其对应的具体属性 信息。ERR 表示词法分析错,END 表

    编译原理实验报告 词法分析器实验报告

    "auto"|"double"|"int"|"struct"|"break"|"else"|"long"|"switch"|"case"|"enum"|"register"|"typedef"|"char"|"extern"|"return"|"union"|"const"|"float"|"short"|"unsigned"|"continue"|"for"|"signed"|"void"|...

    编译原理西北工业大学课后答案

    3解:C语言的关键字有:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned...

    编译原理实验 词法分析器

    "else","enum","extern","float","for","goto","if","int","long","register", "return","short","signed","sizeof","static","struct","switch","typedef", "printf", "union","unsigned","void","volatile",...

    编译原理课后习题答案(蒋立源第三版)

    3解:C语言的关键字有:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned...

    cpp_enum_set:在类型或值的固定大小集合上的类型安全集库,包括用于访问,修改,访问和迭代这些类型或值的方法

    基本原理 枚举很棒,只要您使用它们来表示各个标志或选项即可。 如果要使用枚举表示一组选项,通常可以让枚举的值具有2的幂,然后将它们“或”在一起 enum class option { A = ( 1 &lt;(lhs) | static_cast (rhs); ...

    pl0编译原理实验报告

    有增加++,--等运算符 ...typedef enum { NUL, IDENT, NUMBER, PLUS, MINUS, TIMES, SLASH, ODDSYM, EQL, NEQ, LSS, LEQ, GTR, GEQ, LPAREN, RPAREN, QUOT,//单引号 COMMA, SEMICOLON, PERIOD, BECOMES,

    西北工业大学版(蒋立源第三版)编译原理课后习题答案

    3解:C语言的关键字有:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned...

    野火K60 PCB

    野火K60原理图——6CM-3.5CM版本.pdf 两个不同的原理图 野火K60原理图——6CM-4.5CM版本.pdf fire_K60_代码V2.2.7z 是目前最新的代码 野火Kinetis核心板工程(两个版本).7z 这个是方便购买板子的朋友创建自己的主板...

    AutoCAD2014 ActiveX Reference & Develop's Guide.rar

    acadauto.chm文件为ActiveX Reference Guide,可查询各种属性、方法和事件,并含有VBA及Visual LISP例子,acad_aag.chm文件为ActiveX Develop's Guide,更着重从理论层面介绍CAD的二次开发方式,其内包含各种enum及...

    mtk中NVRAM的读写方法

    NVRAM 的读写方法 NVRAM 的添加方法 以闹钟INLINE ...mmapp_enum 枚举中 NVRAM_EF_MY_LID, /* Add LID with its compile optoin in the tail comment */ NVRAM_EF_LAST_LID_COMMAPP } nvram_lid_commapp_enum;

    V4L2功能列表大全及讲解

    ioctl VIDIOC_ENCODER_CMD,VIDIOC_TRY_ENCODER_CMD - 执行编码器命令 ioctl VIDIOC_ENUMAUDIO - 枚举音频输入 ioctl VIDIOC_ENUMAUDOUT - 枚举音频输出 ioctl VIDIOC_ENUM_FMT - 枚举图像格式

    角形基本原理

    您还可以使用ng generate directive|pipe|service|class|guard|interface|enum|module 。建造运行ng build来构建项目。 构建工件将存储在dist/目录中。 使用--prod标志进行生产构建。运行单元测试运行ng test通过...

    with-photo-changecolor-Android 修图(换证件照背景,污点修复).zip

    大眼瘦脸大长腿更多演示效果请直接查看下方原理文章,或者直接下载 演示APP Release V1.0.0版本演示APP 主要实现了的部分为public enum Region {  FOUNDATION("粉底"),  BLUSH("腮红"),  LIP("唇彩"),  ...

    java1.5新特性

    java1.5之后的新特性: ... 原理:语法结构与java类的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译之后实际上是生成了一个类,该类继承了javva.lang.Enum&lt;E&gt;.

    西北工业大学版(蒋立源第三版)编译原理课后习题答案

    3解:C语言的关键字有:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned...

Global site tag (gtag.js) - Google Analytics