Java枚举类"全方位"
2015-12-04 16:44
369 查看
作为一种长度固定,数据未定的一种存储数据集的数据类型,枚举类有如下方法可供参考。
普通类型的枚举类的创建
是的,就是这样,声明就可以了。
既然有普通类型,当然也会有不普通类型的了,接下来的是可以在枚举类中添加属性的枚举,如下
其中作为属性的position便是外界对此枚举类操作的一个“算子”,当然也可以用普通的枚举方式来对枚举进行处理
然后是带有构造器的枚举类的使用
需要注意的是,在使用构造器的时候,要带参数就都带,否则就都不带,因为声明了带参数的构造器后,默认的无参的构造器将不再起作用
带有抽象方法的枚举类的使用
下面是一个具体的小例子:
程序输出结果:
小总结:
其实枚举也就是一个特殊的类,其中的实例就是其对象,其中的成员变量和成员函数也都是属于每一个实例。
通过这样的方式,我们就可以使枚举类拥有更多的信息(如果只设置一个实例,那么这就是一个单例模式的较好的体现,可以保证在内存中只有一个这样的对象存在!
对每一个实例都实现了抽象的方法的目的就是让每一个对象携带自身具备的唯一的信息。
总结:
对于枚举类的使用,有普通类型,带有变化属性,带有构造器,带有抽象方法的枚举等等。各有各的特点,使用的时候视情况而定!还可以应用于单态模式,岂不快哉?
普通类型的枚举类的创建
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对象序列化用法
- Description Resource Path Location Type Java compiler level does not match the version of the instal
- spring3.0的BeanFactory上下文context获取不到bean
- 基于JDK http包实现的简单代理服务器
- Java HashTable的key
- java中覆盖和重写
- 如何利用decorators.xml排除WEB-INF目录下的某些页面
- 如何安装本地jar包到maven库
- 【Java基础】Java中的持久属性集Properties
- Ubuntu eclipse乱码
- Spring MVC入门1
- Mybatis整合Spring
- eclipse中导入jar包源文件
- 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
- 学自慕课网:Spring入门
- Java中的异常
- java 更新list内的元素
- 关于JAVA(TM) Platfrom SE binary内存过高的问题
- (java)蓝桥杯入门训练
- php myeclipse 软件的下载、安装,环境的搭建、配置