首页 » SEO优化 » phpenum常量技巧_Java列举Enum类型事理寻找

phpenum常量技巧_Java列举Enum类型事理寻找

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

在不该用列举类之前,一样平常利用接口静态常量实现。
比如:

public interface Season { public static final int SPRING = 1; public static final int SUMMER = 2; public static final int AUTUMN = 3; public static final int WINTER = 4;}

利用JUnit利用测试如下:

phpenum常量技巧_Java列举Enum类型事理寻找

@Testpublic void noEnum() { int i = 1; Assert.assertTrue(Season.SPRING==i);}

利用接口静态常量的办法比较难限定变量的范围,而且定义繁琐,功能也很有限,于是在Java 1.5 中定义了一个列举类型:java.lang.Enum。

phpenum常量技巧_Java列举Enum类型事理寻找
(图片来自网络侵删)
Java列举的定义

类似类(class)和接口(interface)的定义,Java供应enum关键字用来定义列举类,在IDEA中创建列举类的菜单如下:

同样定义一个时令的列举类, 代码可以简洁如下:

package cn.osxm.jcodef.func.base;public enum SeasonEnum { SPRING, SUMMER, AUTUMN, WINTER}

在列举类中直接列出常量,常量遵照全部大写的规则。
在上面的列举类示例代码中,SPRING, SUMMER, AUTUMN, WINTER 是SeasonEnum的成员。

列举成员默认是final、public、static (以是可以利用SeasonEnum.SPRING办法调用列举成员)每一个列举类型成员都可以看作是列举类的实例 (SeasonEnum.SPRING的类型也是SeasonEnum)

在JUnit利用测试如下:

@Test public void enumBase() { SeasonEnum season = SeasonEnum.SPRING; Assert.assertTrue(season.equals(SeasonEnum.SPRING)); }Java 列举类的特性

Java列举类的特性有:

列举可以实现接口,但不能继续接口,也不能被继续。
列举类是final的,以是不能继续。
列举类的布局方法是私有的列举成员是静态、final和public列举成员是列举类的实例

但是从上面SeasonEnum列举类的定义来看,完备看不出这些特性,这些特性是怎么来的呢? 请看下面的事理探求。

Java列举类实现的事理探求

ava列举类型的奥秘就在编译阶段,列举类在编译后会天生了一个扩展java.lang.Enum的类。
这个可以通过JDK自带的javap工具来反编译天生的.class文件。
对上面的天生的SeasonEnum.class文件进行反编译,由于这个文件的包路径是cn\osxm\jcodef\func\base,以是在命令行利用如下命令:

javap -p cn\osxm\jcodef\func\base\SeasonEnum.class-p参数的意思是反编译代码中包含私有的方法, p是private的意思。

从掌握台输出的反编译后的源码可以看出:

自定义的列举类会自动继续java.lang.Enum类每个成员变量都会被转换为 private static final的列举类型的实例自动添加private的布局函数 从反编译后的源码就不难明得Enum的特性了。

把稳: 利用专门的Java反编译工具,比如JD GUI、luyten等对Eumn进行反编译的效果靠近源码的效果,无法看到继续等特性,JD-GUI反编译的效果和源码时同等的,这也解释利用JD GUI来进行实际的反编译还是不错的。

标签:

相关文章

phpechojsondecode技巧_PHP JSON

环境配置在 php5.2.0 及以上版本已经内置 JSON 扩展。 JSON 函数函数描述json_encode对变量进行 JSO...

SEO优化 2024-12-09 阅读0 评论0

夏季博客php技巧_夏天被过度营销了吗

只是,拨开影象的滤镜后,夏天并不总是那么美好。它既关于频发的自然磨难、被过度核阅的身体,也关于躲藏在暗处的暴力与孤独。电影《菊次郎...

SEO优化 2024-12-09 阅读0 评论0

php逐条履行技巧_进级PHP7过程记录

项目一贯处于PHP5.6的运行环境中,决定将PHP升级到PHP7,考虑的缘故原由紧张包括:1、PHP7的正式版也已经发布了很永劫光...

SEO优化 2024-12-09 阅读0 评论0