使用枚举定义常量更好点儿

简介: 使用枚举定义常量更好点儿


大家好,欢迎来到雄雄的小课堂,昨天给大家分享的是“java中的Queue队列的用法示例”,今天,分享的主题是“java中,推荐使用枚举定义常量”。

前言:常量,相信大家多不会陌生,常量值一般是在项目中固定不变的。在项目中,我们经常会用到各种各样的常量,比如性别只有两个值,男或者女,就可以定义两个常量;或者季节春夏秋冬也可以定义为常量。通常我们在java中定义常量都这样写:final String SPRING ="春";今天,我们不使用这种方式,我们使用枚举的方式来定义常量,看看相比之下,枚举定义常量有哪些优点呢?

枚举定义常量:

现在我们使用枚举来定义两个常量,代码如下:

static enum SEX{
              MAN,WOMEN;
       }

这是一个简单的枚举常量命名,简单又清晰。

01

枚举常量定义时不必赋值

枚举常量可以不初识赋值,而普通定义的常量必须赋值,即使这个值无意义也得赋。否则编译将无法通过,如下:

给常量MAN赋值,问题解决。

02

枚举常量属于稳态型

比如有人让我们来描述一下男生或者女生都是什么样的,我们使用一般常量这么写:

//定义常量男和女
  static final int MAN = 0;
  static final int WOMEN = 1;
public static void testChang(int s){
    //先检验条件
    if(s>=0&&s<=1){
      switch (s) {
      case MAN:
        System.out.println(MAN+"是帅帅的!");
        break;
      case WOMEN:
        System.out.println(MAN+"是美美的!");
        break;
      }
    }
    
  }

可以看得出来,必须先要检验条件,如果当s的值不是0或者1,肯定不能正常输出,如果常量的值很庞大,那么我们校验的时候必然麻烦。但是假如使用枚举,就可以完全避免这种情况,代码如下:

public static void main(String[] args) {
    testChang(SEX.MAN);
  } 
  //常量的用法
  public static void testChang(SEX s){
    //先检验条件
      switch (s) {
      case MAN:
        System.out.println(MAN+"是帅帅的!");
        break;
      case WOMEN:
        System.out.println(MAN+"是美美的!");
        break;
      }
    
  }

很明显,限定了参数类型是SEX这个枚举类型,你传别的类型,不好意思,不可以的!在编译期间就避免可能存在的问题出现。

案例参考:《编写高质量代码 改善java程序的151个建议》

作者:秦少波


相关文章
|
2月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
28 1
|
6月前
|
开发框架 .NET 编译器
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
40 2
|
6月前
|
C语言
C语言学习记录——枚举(定义、与结构体的区别、优点)
C语言学习记录——枚举(定义、与结构体的区别、优点)
64 3
|
编译器 C语言
【C语言航路外传】如何隐藏代码及声明和定义的在工程中真正的使用场景
【C语言航路外传】如何隐藏代码及声明和定义的在工程中真正的使用场景
128 1
【C++11特性篇】右值引用变量的属性会被编译器识别成左值【详解&证明&代码演示】
【C++11特性篇】右值引用变量的属性会被编译器识别成左值【详解&证明&代码演示】
|
Java Spring
常量or枚举的取舍
常量or枚举的取舍
49 0
|
存储 C++
【C++11保姆级教程】强类型枚举(强类型枚举)和constexpr
【C++11保姆级教程】强类型枚举(强类型枚举)和constexpr
213 0
|
存储 算法 编译器
【C++技能树】令常规运算符用在类上 --类的六个成员函数II
C++中为了增强代码的可读性,加入了运算符的重载,与其他函数重载一样
60 0
|
安全 Unix vr&ar
一文刨析C/C++全局常量的定义
一文刨析C/C++全局常量的定义