Java枚举类"全方位"
作为一种长度固定,数据未定的一种存储数据集的数据类型,枚举类有如下方法可供参考。
普通类型的枚举类的创建
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();
}
程序输出结果:
周五
小总结:
- 其实枚举也就是一个特殊的类,其中的实例就是其对象,其中的成员变量和成员函数也都是属于每一个实例。
- 通过这样的方式,我们就可以使枚举类拥有更多的信息(如果只设置一个实例,那么这就是一个单例模式的较好的体现,可以保证在内存中只有一个这样的对象存在!
- 对每一个实例都实现了抽象的方法的目的就是让每一个对象携带自身具备的唯一的信息。
总结:
对于枚举类的使用,有普通类型,带有变化属性,带有构造器,带有抽象方法的枚举等等。各有各的特点,使用的时候视情况而定!还可以应用于单态模式,岂不快哉?
Java枚举类"全方位"的更多相关文章
- Java枚举类在生产环境中的使用方式
前言 Java枚举在项目中使用非常普遍,许多人在做项目时,一定会遇到要维护某些业务场景状态的时候,往往会定义一个常量类,然后添加业务场景相关的状态常量.但实际上,生产环境的项目中业务状态的定义大部 ...
- Java 枚举类
如果要定义一个枚举类: public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE}; 实际上,这个声明定义的类型是一个类,它刚好有4个实例 ...
- java 枚举类 enum 总结
枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...
- java 枚举类小结 Enum
好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧.说实话,枚举类确实能够给我们带来很大的方便. 说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构 ...
- java枚举类
enum关键字用于定义枚举类,若枚举只有一个成员, 则可以作为一种单例模式的实现方式. 枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰. 枚举类的使用 priva ...
- 【JAVA】浅谈java枚举类
一.什么情况下使用枚举类? 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便? 二.为什么不用静态常量来替代枚举类呢? public static final int SEASO ...
- Java枚举类enum
枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enu ...
- java枚举类(enum) 基础知识讲解
枚举类是在java 5后新增的,可以用于封装常量,并且还可以为常量的使用提供一些方法. 定义枚举类的语法: public enum EnumName{ 成员1(A,B...),成员2(A,B...), ...
- Java枚举类使用
用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...
随机推荐
- js页面刷新跳转的几种方式及区别
跳转常用方法: window.location.href="index.php"; window.history.back(-1);//类似于按钮,参数是负几,就后退几次. win ...
- JavaScript数据结构和算法----队列
前言 队列和栈很像,只是用了不同的原则.队列是遵循先进先出(FIFO)原则的一组有序的的项,队列在尾部添加新元素,从顶部移除元素.最新添加的元素必须必须排队在队列的,末尾.可以想象食堂排队买饭的样子. ...
- python字典无限遍历
#无限遍历dict,通过key获取value,嵌套字典存在多个相同的key,可获取多个key class getValues(object): def __init__(self): pass #无限 ...
- Vim8.0在Debian下,normal模式的O命令出现延时
Update 2018/4/26 问题是什么 在Debian的Vim8.0中,normal模式下,使用O创建新行,常常出现延迟情况:按下O后,可以看见O首先在当前光标位置出现,过了大约0.5-1秒,接 ...
- 重写轮子之 kNN
# !/usr/bin/python # -*- coding:utf-8 -*- """ Re-implement kNN algorithm as a practic ...
- linux系统运维面试题简答
1. 简述常用高可用技术 解答: Keepalived:Keepalived是一个保证集群高可用的服务软件,用来防止单点故障,使用VRRP协议实现.在master和backup之间通过mast ...
- VUE相关资料合集
===官方=== https://github.com/vuejs/vue vue-components组件库 ---PC端--- https://github.com/ElemeFE/element ...
- Python3 日期和时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...
- 在查询语句中使用 NOLOCK 和 READPAST
对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问 ...
- 安卓高级6 SnackBar
引言 文/李牧羊(简书作者) 原文链接:http://www.jianshu.com/p/2654e6bda3b1 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者". ...