`
032615
  • 浏览: 61011 次
  • 性别: 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网络中的使用

    enum 结构分析源码

    通过阅读和分析这个源码,你可以深入理解C语言中枚举的工作原理,以及如何在实际编程中有效地利用它们。 此外,枚举在其他编程语言中可能有不同的表现形式和特性,例如在C++中,枚举可以具有更强的类型安全性,并且...

    WPF 中一组 RadioButton 向 Enum 的绑定

    首先,让我们理解RadioButton的基本工作原理。RadioButton控件用于在一系列互斥的选项中让用户做出单选。在WPF中,RadioButton通常通过IsChecked属性与其他RadioButton进行分组,并通过GroupName属性确保同一组内的...

    DNS-ENUM.rar_ENUM/DNS_dns _enum 域名解析

    `DNS-ENUM.rar_ENUM/DNS_dns_enum 域名解析`这个压缩包文件包含了关于DNS枚举和域名解析的相关工具或代码实现,这通常涉及到网络安全分析、漏洞检测或网络监控等领域。 1. **DNS枚举**: DNS枚举是一种网络安全...

    cpp-BetterEnums编译时期枚举库拥有干净的语法只有一个头文件没有依赖性

    在标准C++中,枚举(enum)是一种定义常量集合的方式,但它们有一些限制,如类型安全不足、缺少自定义操作和表达式支持等。Better Enums通过提供一种更强大的枚举模型来解决这些问题。它允许开发者定义枚举值并关联...

    cplusplus_enum_regedit

    根据提供的信息,我们可以详细解析如何使用C++来枚举...通过理解注册表的基本概念以及上述API函数的工作原理,可以轻松实现这一目标。此外,本文还提供了一个具体的实现示例,可以帮助开发者更好地理解和应用这些技术。

    enum_func.zip_FRIDA_frida hook_hook enum_安卓hook

    1. **Frida原理**:Frida工作于进程注入模式,它能够将自身注入到目标进程中,然后通过JavaScript来实现对目标进程的代码插桩。JavaScript代码在目标进程中运行,可以直接操作内存、API调用等,提供极高的灵活性。 ...

    7enum枚举字函数程序案例VC共4页.pdf.zip

    10. **学习与实践**: 通过这个案例,学习者不仅可以了解到枚举字函数的原理和使用,还能锻炼实际编程技能,将理论知识应用到实际项目中,增强解决实际问题的能力。 总结:这个压缩包中的PDF文档提供了一个使用VC++...

    Java中的Enum枚举用法.doc

    4. **枚举的原理:** - 枚举类型在编译后会被转换成一个特殊的类,该类继承自`java.lang.Enum`。 - 枚举中的每个元素实际上都是该类的一个实例,并且是静态和final的。 - 编译后的枚举类类似于以下结构: ```...

    java 枚举(enum) 详解(学习资料)

    3. **枚举的底层原理**: 当编译器遇到枚举类型时,会自动为每个枚举常量创建一个私有的构造函数,并在类的静态初始化块中创建实例。这些实例存储在静态字段中,确保它们在类加载时创建,因此枚举对象是线程安全的...

    Enum ,file

    在编程领域,枚举(Enum)是一种特殊的数据类型,它允许我们定义一组相关的常量,这些常量可以作为变量的值。...在现代C++中,虽然有更高级的库(如C++标准库的`&lt;filesystem&gt;`),但理解这些基本原理仍然是有价值的。

    Struct And Enums结构和枚举

    在编程领域,结构(Struct)和枚举(Enum)是两种...在VS2005环境下,你可以方便地调试和测试这些示例,加深对这两种数据类型工作原理的理解。通过不断练习和探索,你将能够灵活运用Struct和Enums解决实际编程问题。

    哈工大-编译原理-习题及答案汇总.pdf

    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、...

    编译原理_计算器_C++实现

    在这个实现中,我们还使用了 enum 类型来定义 Token 类型,然后使用 switch 语句来进行 Token 的分类和处理。此外,我们还使用了 namespace std; 来访问 standard 库中的函数和变量。 在这个 C++ 实现中,我们使用...

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

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

    编译原理 厦大 实验一

    2. 定义关键字数组:char *keyword[34]={"auto","break","case","char","const","continue","default","do","double", "else","enum","extern","float","for","goto","if","int","long","register", "return","short...

Global site tag (gtag.js) - Google Analytics