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的原理及在IMS网络中的使用
通过阅读和分析这个源码,你可以深入理解C语言中枚举的工作原理,以及如何在实际编程中有效地利用它们。 此外,枚举在其他编程语言中可能有不同的表现形式和特性,例如在C++中,枚举可以具有更强的类型安全性,并且...
首先,让我们理解RadioButton的基本工作原理。RadioButton控件用于在一系列互斥的选项中让用户做出单选。在WPF中,RadioButton通常通过IsChecked属性与其他RadioButton进行分组,并通过GroupName属性确保同一组内的...
`DNS-ENUM.rar_ENUM/DNS_dns_enum 域名解析`这个压缩包文件包含了关于DNS枚举和域名解析的相关工具或代码实现,这通常涉及到网络安全分析、漏洞检测或网络监控等领域。 1. **DNS枚举**: DNS枚举是一种网络安全...
在标准C++中,枚举(enum)是一种定义常量集合的方式,但它们有一些限制,如类型安全不足、缺少自定义操作和表达式支持等。Better Enums通过提供一种更强大的枚举模型来解决这些问题。它允许开发者定义枚举值并关联...
根据提供的信息,我们可以详细解析如何使用C++来枚举...通过理解注册表的基本概念以及上述API函数的工作原理,可以轻松实现这一目标。此外,本文还提供了一个具体的实现示例,可以帮助开发者更好地理解和应用这些技术。
1. **Frida原理**:Frida工作于进程注入模式,它能够将自身注入到目标进程中,然后通过JavaScript来实现对目标进程的代码插桩。JavaScript代码在目标进程中运行,可以直接操作内存、API调用等,提供极高的灵活性。 ...
10. **学习与实践**: 通过这个案例,学习者不仅可以了解到枚举字函数的原理和使用,还能锻炼实际编程技能,将理论知识应用到实际项目中,增强解决实际问题的能力。 总结:这个压缩包中的PDF文档提供了一个使用VC++...
4. **枚举的原理:** - 枚举类型在编译后会被转换成一个特殊的类,该类继承自`java.lang.Enum`。 - 枚举中的每个元素实际上都是该类的一个实例,并且是静态和final的。 - 编译后的枚举类类似于以下结构: ```...
3. **枚举的底层原理**: 当编译器遇到枚举类型时,会自动为每个枚举常量创建一个私有的构造函数,并在类的静态初始化块中创建实例。这些实例存储在静态字段中,确保它们在类加载时创建,因此枚举对象是线程安全的...
在编程领域,枚举(Enum)是一种特殊的数据类型,它允许我们定义一组相关的常量,这些常量可以作为变量的值。...在现代C++中,虽然有更高级的库(如C++标准库的`<filesystem>`),但理解这些基本原理仍然是有价值的。
在编程领域,结构(Struct)和枚举(Enum)是两种...在VS2005环境下,你可以方便地调试和测试这些示例,加深对这两种数据类型工作原理的理解。通过不断练习和探索,你将能够灵活运用Struct和Enums解决实际编程问题。
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、...
在这个实现中,我们还使用了 enum 类型来定义 Token 类型,然后使用 switch 语句来进行 Token 的分类和处理。此外,我们还使用了 namespace std; 来访问 standard 库中的函数和变量。 在这个 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...