zoukankan      html  css  js  c++  java
  • java 枚举

    枚举是JDK1.5引入的小功能,但是却对我们的开发带来了极大的帮助。

    首先我们应该知道什么是枚举?

    枚举就是把集合里的对象元素 一个一个提取出来!比如说 ,你买了一合巧克力, 里面有草莓味的 、有香草口味的 、有苹果口味的 、你想把他们拿出来, 就必须用“手”一个一个把他们拿出来 并且一次只能取一个。 这里的手就是枚举器,你取的动作就是枚举的过程。从代码来看,简单讲就是:枚举是限定有限可能值的一种手段。

    我们为什么要使用枚举?

    使用枚举提高了代码的可读性与可维护性,降低了程序出错的几率。

    比如:我们写一个实体Person类:

    public class Person {
        private String name;
        private int age;
        private String sex;
        
        Person(String name, int age, String sex) {
            this.age = age;
            this.name = name;
            this.sex = sex;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        public String toString() {
            return "姓名为:" + this.name + ",年龄为:" + this.age + ",性别:" + this.sex;
    
        }
    }

    但是,但我们创建对象时:Person p=new Person("赵江",20,"男");感觉好像没什么问题,但是仔细观察你会发现如果创建对象时是:Person p=new Person("赵江",20,"逗逼");此时,创建的对象依旧能成功,但是“逗逼”这个性别是不存在的,因此这就是个需要改善的地方。而枚举,则能够很好的解决这个问题。

    以下是修改后的代码:(重点是红色部分,即枚举的使用)

    public class Person {
        private String name;
        private int age;
        private Sex sex;
    
        public enum Sex {
            MAN("男"), FEMALE("女");
            private String sex;
    
            private Sex(String sex) {
                this.sex = sex;
            }
    
            @Override
            public String toString() {
                return this.sex;
            }
        };
    
        public static void main(String[] args) {
            Person p = new Person("001", 1, Sex.MAN);
            System.out.println(p);
        }
    
        Person(String name, int age, Sex sex) {
            this.age = age;
            this.name = name;
            this.sex = sex;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        public String toString() {
            return "姓名为:" + this.name + ",年龄为:" + this.age + ",性别:" + this.sex;
    
        }
    }

    此时,从修改后的代码来看,无论如何Person对象的实例的性别已不可能是“逗逼”,而只能是“男”或“女”。

    如何使用枚举?

    关于如何使用枚举,网上有一篇不错的文章:《java枚举7种常见的用法》

     

  • 相关阅读:
    java, listmap2json, fastjson
    java, mybatis, 调用mysql存储过程
    解析json串,利用正则表达式,split
    alibaba fastjson List<Map<String, String>>2Str
    getParameterMap()的返回值为Map<String, String[]>,从其中取得请求参数转为Map<String, String>的方法如下:
    message from server: "Host 'XXX' is not allowed to connect to this MySQL server
    Java之工厂方法
    oracle 的分析函数
    在js中怎样获得checkbox里选中的多个值?(jQuery)
    获得select被选中option的value和text
  • 原文地址:https://www.cnblogs.com/scetopcsa/p/3890847.html
Copyright © 2011-2022 走看看