首页
学习
活动
专区
工具
TVP
发布

为什么建议你使用枚举

本文的结构目录如下: 枚举的 7 种使用方法 很多人不使用枚举的一个重要的原因是对枚举不够熟悉,那么我们就先从枚举的 7 种使用方法说起。...); 第二,使用 int 类型的语义不够明确,比如我们在控制台打印时如果输出 1...2...3 这样的数字,我们肯定不知道它代表的是什么含义。...知识扩展 枚举为什么是线程安全的?...this==other; } 总结 本文我们介绍了枚举类的 7 种使用方法:常量、switch、枚举中添加方法、覆盖枚举方法、实现接口、在接口中组织枚举类和使用枚举集合等,然后讲了如果不使用枚举使用...并且我们还讲了枚举类的使用场景——单例,以及枚举为什么是安全的,最后我们讲了枚举比较的小技巧,希望本文对你有帮助。

18450
您找到你想要的搜索结果了吗?
是的
没有找到

为什么建议你使用枚举

枚举的 7 种使用方法 很多人不使用枚举的一个重要的原因是对枚举不够熟悉,那么我们就先从枚举的 7 种使用方法说起。...); 第二,使用 int 类型的语义不够明确,比如我们在控制台打印时如果输出 1...2...3 这样的数字,我们肯定不知道它代表的是什么含义。...知识扩展 枚举为什么是线程安全的?...this==other; } 总结 本文我们介绍了枚举类的 7 种使用方法:常量、switch、枚举中添加方法、覆盖枚举方法、实现接口、在接口中组织枚举类和使用枚举集合等,然后讲了如果不使用枚举使用...并且我们还讲了枚举类的使用场景——单例,以及枚举为什么是安全的,最后我们讲了枚举比较的小技巧,希望本文对你有帮助。

36030

为什么建议主键整型自增?

昨天看到一个MySQL数据库设计原则:强烈建议表的主键使用整型自增主键。为啥呢?...为什么主键建议整型、自增? 了解了数据的存储方式以及查询过程和插入过程,我们接下来进入正题,回答为什么主键建议是整型、自增这个问题。 首先为什么整型呢?...显然是前者,因为字符串的比较是转换成ASCII码一位一位的比,如果最后一位不一样,比到最后才比较出大小,就比整型比较慢多了,存储空间来说,整型更小。索引越节约资源越好。 那为什么自增呢?...我们都知道当某一个业务量增长非常快,数据量非常大,数据库性能无法满足业务需求的时候通常会实施分库分表,这个时候自增主键就不适用了,比如订单表,分成16个表,如果都使用自增的话,肯定会造成订单id重复,所以此时的解决方案就是分布式...小结 今天我通过讲解MySQL数据的存储方式以及数据查找与插入过程,从MySQL的底层机制了解了MySQL主键为什么建议使用整型并且自增,最后我们引申了一个分布式id的问题,此时并不强制严格自增,保证趋势递增即可

1.1K40

为什么 DNS 协议使用 UDP?使用了 UDP 吗?

为什么 DNS 协议使用 UDP 呢?这个问题可能大部分同学在各种博客或者面试过程中都或多或少遇见过,张口就来,UDP 快啊,DNS 使用 UDP 使得打开网页速度更快。...那各位有没有想过,既然 UDP 更快,为什么 HTTP 不使用 UDP 呢?...另外,为什么 DNS 协议使用 UDP 这个问题本身其实并不完全正确,DNS 并非使用 UDP 协议,它同时占用了 UDP 和 TCP 的 53 端口,作为单个应用层的协议,DNS 同时使用两种传输协议也属实是个另类了...区域传输使用 TCP 而不是 UDP,因为数据同步传送的数据量比一个 DNS 请求和响应报文的数据量要多得多。 文章开头提到的既然 UDP 更快,为什么 HTTP 不使用 UDP 呢?...小结 综上,总结下,虽然 UDP 速度更快,DNS 协议也确实大面积使用了 UDP,但是由于 UDP 面向报文、只能传输小于 512 字节的特性,DNS 并非使用了 UDP,具体的 TCP 和 UDP

4K30

RPC接口不允许使用枚举类型。为什么

翠花上代码 版本1.0 的枚举类。可以看出来孙悟空还是比三太子厉害的,排在了前面。...注意:RPC服务中一般将枚举类序列化成名称的形式,反序列化在通过valueOf()的方式进行。 // 客户端,对RoleEnum序列化。...我们看下枚举类 public enum RoleEnum { WU_KONG(0,"孙悟空"), NE_ZHA(1,"哪吒"), BA_JIE(2,"猪八戒"); int...也就是调用枚举类的valueOf()方法出现的错误。是因为八戒在服务端提供2.0的二方包才有,但是客户端还是1.0版本,里面自然没有八戒。根据名称自然解析不出来八戒楼。...建议 1、RPC提供服务的时候,禁止将枚举类作为参数返回,也不能封装到POJO对象中返回。 2、对于枚举类,可以封装成一个对象代替。

81500

深度剖析为什么Python中整型不会溢出

在python3后,统一使用了长整型。这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型整型,长整型...因此python就降低其他行业的学习门槛了。...在长整型的 ob_digit 中元素理论上可以保存的int类型有 32 位,但是我们保存 15位,这样元素之间的乘积就可以只用 int 类型保存即可, 对乘积结果做位移操作就能得到尾部和进位 carry...长整型的运算 加法与乘法运算都可以使用我们小学的竖式计算方法,例如对于加法运算: ?...竖式计算不是按个位十位来计算的吗,为什么这边用整个元素?...找到合适的数据结构后,要重新定义整型的所有运算操作,本篇虽然介绍了加法和乘法的处理过程,但其实还需要做很多的工作诸如减法,除法,位运算,取模,取余等。

3.3K30

深度剖析为什么 Python 中整型不会溢出?

在 python3 后,统一使用了长整型。这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型整型,长整型… 因此 python 就降低其他行业的学习门槛了。...在长整型的 ob_digit 中元素理论上可以保存的int类型有 32 位,但是我们保存 15位,这样元素之间的乘积就可以只用 int 类型保存即可, 对乘积结果做位移操作就能得到尾部和进位 carry...长整型的运算 加法与乘法运算都可以使用我们小学的竖式计算方法,例如对于加法运算: ?...竖式计算不是按个位十位来计算的吗,为什么这边用整个元素?...找到合适的数据结构后,要重新定义整型的所有运算操作,本篇虽然介绍了加法和乘法的处理过程,但其实还需要做很多的工作诸如减法,除法,位运算,取模,取余等。

1.4K41

使用javap深入理解Java整型常量和整型变量的区别

我下图代码第五行和第九行分别定义了一个整型变量和一个整型常量: static final int number1 = 512; static int number3 = 545; Java程序员都知道两者的区别...[1240] 下面我们就用javap将.class文件反编译出来然后深入研究Java里整型变量和整型常量的区别。...使用命令行javap -c constant.ConstantFolding查看.class文件反编译出来的字节码: [1240] 结果: [1240] 这些字节码指令的说明,在wikipedia里有说明...我们从下图的常量池列表能发现,序号为#29的常量318976正是整型常量number1(512)和整型常量(623)的积。...System.out.println("Value: " + product1 + " , " + product2); 从这些字节码也能看出,Java里我们直接用加号进行字符串拼接操作,Java编译器在编译时,自动使用

1.1K30

代码的坏味道(二)——为什么建议使用模型来替换枚举

为什么建议使用对象来替换枚举? 在设计模型时,我们经常会使用枚举来定义类型,比如说,一个员工类 Employee,他有职级,比如P6/P7。...这里就出现了「代码的坏味道」 新的枚举值出现怎么办? 显然,添加一个新的枚举值是非常痛苦的,特别通过 switch 来控制流程,需要每一处都修改枚举,这也不符合开闭原则。...而且,即使不修改,默认的防御性手段也会让那个新的枚举值将会抛出一个异常。 为什么会出现这种问题? 是因为我们定义的枚举是简单类型,无状态。...这个时候,需要用重新去审视模型,这也是为什么 DDD 是用来解决「大泥球」代码的利器。...一种好的实现方式是枚举升级为枚举类,通过设计「值对象」来重新建模员工等级: abstract class EmployeeLevel { public static final EmployeeLevel

10230

Java枚举类型使用

在编程中,常常遇到多种类型、多种状态的情况,对于这种可以事先预知的业务我们常常有两种表示方法: 使用DB管理,优点是方便在线维护,缺点是每次加载都要读取数据库,加载的性能取决于数据库的压力 。...使用枚举类型,优点是加载速度依赖于应用服务器,缺点是修改比较麻烦,每次加类型都需要发布代码。...对于Java枚举类型的使用,我们可以总结为以下几个方面:整型值,字符串字段和字符串的相关描述,下面我们就讨论如何方便的在这几个类型中相关转换,对于所有的类型转换可以总结如下: int --> Enum...String -->Enum Enum-->String Enum-->描述 int -->描述 String -->描述 下面我们对于上面的7种描述来做出对应的转换方法,首先定义一个枚举类型...Test public void TestEnum(){ int val=1; EnumDemo intEnum=EnumDemo.values()[val];//整型

2.1K20

为什么我不再推荐枚举策略模式?

◆一、为什么讲策略模式 策略模式,应该是工作中比较常用的设计模式,调用方自己选择用哪一种策略完成对数据的操作,也就是“一个类的行为或其算法可以在运行时更改” 我个人的理解是 将一些除了过程不同其他都一样的函数封装成策略...加之我们有更好的选择,所以此处不再推荐经典策略模式 ◆三、基于枚举的策略模式 这里对这种简单的策略,推荐用枚举进行优化。枚举的本质是创建了一些静态类的集合。...,调用方也做到了0修改,但正确地使用枚举策略模式需要额外考虑以下几点。...工厂策略模式会比枚举策略模式啰嗦,但也更加灵活、易扩展性和易维护。故简单策略推荐枚举策略模式,复杂策略才推荐工厂策略模式。...简单说说ES6新特性 Redis 中使用 list,streams,pub/sub 几种方式实现消息队列 新一代多系统启动U盘解决方案 架构师学习笔记之:并发编程(图解原子操作) 容器管理的 9

1.3K30

在Android中使用枚举注解而不是枚举

很多开发规范都是不建议在Android中使用枚举的,在Android系统中使用枚举的开销是使用常量的2倍。...就是这个类在给他人使用时,构造函数由于参数是 int 类型。所以他可以传递我们定义好的3种类型中的其它任意 int 数值,这就有可能会产生某种错误。...使用这个标识了注解的生命周期,这里指定值为 RetentionPolicy.SOURCE 说明这个注解保留在源码阶段。...我们这里使用 RetentionPolicy.SOURCE 的用意就是在编码时能够识别出错误的 FileType,至于 RUNTIME和 CLASS 阶段的状态,我们是不关心的。...@IntDef 是 android.support.annotation 包定义的注解,使用它来规范我们的 fileType 变量的取值范围。

1.3K20

9.6 使用枚举类型

01 枚举 1、如果一个变量只有几种可能的值,则可以定义为枚举类型,所谓“枚举”就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。...2、枚举变量和其他数值型量不同,它们的值只限于花括号中指定的值之一。 3、枚举常量是由程序设计者命名的,用什么名字代表什么含义,完全由程序员根据自己的需要而定,并在程序中作相应处理。...4、一般形式 enum[枚举名]{枚举元素列表},其中枚举名应遵循标识符的命名规则。 5、C编译对枚举类型的枚举元素按常量处理,故称枚举常量。不要因为他们是标识符而把他们看作变量,不能对他们赋值。...6、每一个枚举元素都代表一个整数,C语言编译按定义时的顺序默认它们的值为0,1,2,3,4,5……。 7、枚举元素可以用来判断比较。 有时候,正是那些意想不到之人,成就了无人能成之事。

5123229
领券