首页 编程 软件学院 查看内容

关于Java中枚举Enum的深入剖析

2017-6-2 11:12 |来自: 互联网 1815 0

摘要: 什么是EnumEnum是自Java 5 引入的特性,用来方便Java开发者实现枚举应用。为什么会有Enum如果大家有什么不理解的地方,可以在评论里面提出来,如果觉得还不错,请点赞或者分享给你的朋友,以鼓励我不断前进。学习方 ...

什么是Enum

Enum是自Java 5 引入的特性,用来方便Java开发者实现枚举应用。

为什么会有Enum

如果大家有什么不理解的地方,可以在评论里面提出来,如果觉得还不错,请点赞或者分享给你的朋友,以鼓励我不断前进。学习方法可以找我java学习交流 群331789133

然而上面的还是有不尽完美的地方

  • setColor(COLOR_RED)与setColor(0)效果一样,而后者可读性很差,但却可以正常运行

  • setColor方法可以接受枚举之外的值,比如setColor(3),这种情况下程序可能出问题

概括而言,传统枚举有如下两个弊端

  • 安全性

  • 可读性,尤其是打印日志时

枚举原理是

什么首先,为了探究枚举的原理,我们先简单定义一个枚举类,这里以季节为例,类名为Season,包含春夏秋冬四个枚举条目

然后

从上反编译结果可知

static代码块

其中

swtich中的枚举

不过,通常情况下switch-case支持类似int的类型,那么它是怎么做到对Enum的支持呢,我们反编译上述方法看一下字节码的真实情况.

学习有困难或者想获取JAVA资料可以找我java学习交流 群331789133

枚举与混淆

在Android开发中,进行混淆是我们在发布前必不可少的工作,混下后,我们能增强反编译的难度,在一定程度上保护了增强了安全性.

使用proguard优化

使用Proguard进行优化,可以将枚举尽可能的转换成int。配置确保代码生效

当我们使用gradlew打包是,看到类似下面的输出,即Number of unboxed enum classes:1

代表已经将一个枚举转换成了int的形式。

本文出处: http://www.toutiao.com/a6426197555177488641/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部