Java枚举类"全方位"

简介: 作为一种长度固定,数据未定的一种存储数据集的数据类型,枚举类有如下方法可供参考。普通类型的枚举类的创建protected enum ColorEnum{ red,orange,yellow,green,blue,purple }是的,就是这样,声明就可以了。

作为一种长度固定,数据未定的一种存储数据集的数据类型,枚举类有如下方法可供参考。


普通类型的枚举类的创建

protected enum ColorEnum{
        red,orange,yellow,green,blue,purple
    }

是的,就是这样,声明就可以了。


既然有普通类型,当然也会有不普通类型的了,接下来的是可以在枚举类中添加属性的枚举,如下

public enum SeasonEnum{
        spring,summer,fall,winter;
        private final static String position="test";

        public static SeasonEnum getSeason(){
            if(position.equals("test")){
                return summer;
            }else{
                return winter;
            }
        }
    }

其中作为属性的position便是外界对此枚举类操作的一个“算子”,当然也可以用普通的枚举方式来对枚举进行处理


然后是带有构造器的枚举类的使用
需要注意的是,在使用构造器的时候,要带参数就都带,否则就都不带,因为声明了带参数的构造器后,默认的无参的构造器将不再起作用

public enum GenderEnum{

        MAN("MAN"),WOMAN("WOMAN");

        //代表一个成员变量,便于赋值和获取数据
        private String value;

        GenderEnum(String gender){
            this.value=gender;
        }
        //成员变量值的get方法
        public String getValue(){
            return value;
        }
    }

带有抽象方法的枚举类的使用

public enum PersonInfo{
        NAME{public String getName(){return "S**";}},
        AGE{public String  getName(){return "**";}},
        ADDRESS{public String getName(){ return "*南省**市**县";}},
        E_MAIL{public String getName(){return "1064*****2@qq.com";}};
        //这个方法就是一个抽象的方法
        public abstract String getName();
    }

下面是一个具体的小例子:

package test;

public class Test {

    public static void main(String[] args) {
        System.out.println(WeekDay.FRIDAY.getInfo());
    }
}
enum WeekDay{
    MONDAY("周一"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,TWESDAY("周二"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,WENDESDAY("周三"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,YHURSDAY("周四"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,FRIDAY("周五"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,SATASDAY("周六"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,SUNDAY("周日"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }};
    private String value;
    public String getValue() {
        return value;
    }

    private WeekDay(String value){
        this.value = value;
    }

    public abstract String getInfo();
}

程序输出结果:

周五

小总结:

  • 其实枚举也就是一个特殊的类,其中的实例就是其对象,其中的成员变量和成员函数也都是属于每一个实例。
  • 通过这样的方式,我们就可以使枚举类拥有更多的信息(如果只设置一个实例,那么这就是一个单例模式的较好的体现,可以保证在内存中只有一个这样的对象存在!
  • 对每一个实例都实现了抽象的方法的目的就是让每一个对象携带自身具备的唯一的信息。

总结:
对于枚举类的使用,有普通类型,带有变化属性,带有构造器,带有抽象方法的枚举等等。各有各的特点,使用的时候视情况而定!还可以应用于单态模式,岂不快哉?

目录
相关文章
|
1月前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
40 6
|
23天前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
103 60
|
2天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
19天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
41 17
|
11天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
15天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
55 4
|
16天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
20天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
24天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
24天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
下一篇
无影云桌面