`
wangqisen
  • 浏览: 47167 次
文章分类
社区版块
存档分类
最新评论

关于Enum枚举类没有values()方法却可以在枚举类中使用的问题

 
阅读更多

在java.lang.Enum类中,所有的方法如下所示:


里面并没有values()静态方法,而在我们使用enum类时,例如:enum classA{

RED,GREEN

}

可以通过java编译器的提示得到values()静态方法,这是为什么呢?


这是由于java编译器在对enum关键字进行处理时,实际上是将enum转换成为了java.lang.Enum类的一个子类来完成,而这个子类中含有values()静态方法。这一点,可以通过反编译enum类来查看。


如图,通过javap反编译enum枚举类,可以看到编译器在对enum处理时,实际上是转换成了Enum的一个子类来实现的,里面可以看到有values()静态方法的声明。

分享到:
评论

相关推荐

    java 中枚举类enum的values()方法的详解

    主要介绍了java 中枚举类enum的values()方法的详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下

    枚举(switch、覆盖枚举、实现接口等)

    用法三:向枚举中添加新方法 如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum实例。 public enum Color { RED("红色" , 1 ), GREEN( "绿色" , 2 ), BLANK...

    values_for:在 ActiveRecord 支持的模型中创建可枚举类型

    与现有的 ActiveRecord 插件(例如 enum_fu 将可枚举属性存储为整数)不同,values_for 将可枚举属性的内容存储在数据库的 varchar 列中。 该字段将使用 validates_inclusion_of 自动验证并接受所有相同的选项。 ...

    enum-props:枚举,支持其他元数据

    它公开了一个Enum工厂,该工厂允许将其他元数据添加到每个枚举成员。 安装 npm install -S enum-props 用法 var Enum = require ( 'enum-props' ) ; // define a simple enum (automatically flaggable -> A: 0x01,...

    enum_handler:RubyActiveRecord 工具,用于处理最好表示为枚举的模型属性

    假设实际值在数据库中存储为整数或字符串,但您希望在其余代码中使用符号。 例如,如果您有一个状态字段,您可能希望将值存储为 0 表示挂起,1 表示活动,2 表示已终止,但您希望将它们引用为 :active、:terminate ...

    【05-面向对象(下)】

    在外部类内部使用内部类-不要在外部类的静态成员中使用非静态内部类,因为静态成员不能访问非静态成 员。 • 2.在外部类以外使用非静态内部类。  –private 修饰的内部类只能在外部类内部使用。  –在外部...

    C#实现获取枚举中元素个数的方法

    实现该功能可以使用枚举基类System.Enum的GetNames(Type t) 方法来获取某个枚举中的元素列表。 具体功能代码如下: enum EnumTest { type1, type2, } class Program { static void Main(string[] args) { ...

    dart-enums:在 Dart 中创建枚举的库

    很大程度上受 Java 的枚举特性的启发,这个库提供了一个可扩展的 Enum 类,该类为所有枚举实例提供一个序数和一个名称。 还提供了一个valueOf构造函数和values()可迭代的。 使用示例: class MyEnum extends ...

    JSP 中Hibernate实现映射枚举类型

    Java BO类Gender是枚举类型,想在数据库中存成字符串格式,如何编写hbm.xml? public enum Gender{ UNKNOWN(Unknown), MALE(Male), FEMALE(Female); private String key; private Gender(final String key) {...

    说说Java的枚举类型

     JDK5中提供了Java枚举类型的实现,与其说是一种新类型,倒不如说是一种语法糖。  public enum Season {  SPRING,  SUMMER,  AUTUMN,  WINTER  }  通过反编译工具 jad来看看这段代码是如何实现的...

    reconstant:在编程语言之间共享常量定义,并使常量再次常量

    Reconstant使您可以在编程语言之间共享常量和枚举定义。 常量在yaml文件中定义,并以多种编程语言转换为惯用定义。 支持的输出包括C / CPP头文件,Python3(使用enum模块),Python2,Javascript,VueMixins和Java...

    飞秋FeiQ插件源代码

    飞秋FeiQ(局域网聊天软件)二次开发文档 作者:卢本陶 l版u权be所nt有ao @ t侵om权.c必om 究 FQ_SENDDATA_RESULT 描述的是在模块里发送数据返回的结果. ...枚举描述在界面上的菜单位置. enum FQ_UI_TYPE { FQ_UI_

    MTT:使用MSBuild任务将C#DTO转换为Typescript接口

    C#DTO到Typescript接口 MTT从.NET DTO生成TypeScript接口。 它实现了当前TypeScript规范的大多数主要功能。 由于它完全独立于您的IDE或... EnumValues (默认为int枚举),如果设置为Strings ,则生成打字稿 如果将

    sequelize-to-json-schema:sequelize模型中的灵活json模式生成器

    重命名属性(如果它们在您的json模式中不同)(例如,snake_case到camelCase) 包括使用$ ref或内联的关联 自动为枚举生成示例 通过描述,示例,验证等轻松自定义模式 专为草案06设计 例子 // User model is ...

    演示

    枚举Hyper-V主机中的所有虚拟机 要求:Windows Server 2012 R2 HYPER-V Windows Server 2012 R2 .PARAMETER HyperV This can be a single servername or an array of servers. This is mandatory parameter, so if ...

    数据库相关的知识点!

    在使用组合索引时,若组合索引为(name,email),单独索引email时不走索引,这称为最左前缀匹配原则,最左匹配原则中,mysql会一直向右匹配知道遇到(< > between like)这一类的范围查询时停止 explain + sql查询语句,...

    walter:产生PostgreSQL类型的迁移sql

    没有枚举传入的用法。 $ walter my_type some_table potato ALTER TYPE my_type RENAME TO __my_type; CREATE TYPE my_type AS ENUM(); ALTER TABLE some_table RENAME COLUMN potato to _potato; ALTER TABLE some...

    hibernate 教程

    持久化枚举(Persistent enum)类型 5.2.4. 自定义值类型 5.2.5. 映射到"任意"(any)类型 5.3. SQL中引号包围的标识符 5.4. 映射文件的模块化(Modular mapping files) 6. 集合类(Collections)映射...

    hibernate

    持久化枚举(Persistent enum)类型 5.2.4. 自定义值类型 5.2.5. 映射到"任意"(any)类型 5.3. SQL中引号包围的标识符 5.4. 映射文件的模块化(Modular mapping files) 6. 集合类(Collections)映射...

    pg-order-by-related:按 PostGraphile 连接上的相关列排序

    这个 Graphile Engine 插件在连接的orderBy参数中添加了额外的枚举值,允许您按相关表中的列进行排序。 需要postgraphile@^4.3.1或graphile-build-pg@^4.3.1 例子: { # additional enum values exposed here :...

Global site tag (gtag.js) - Google Analytics