JAVA枚举小结
Posted tanyunlong_nice
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA枚举小结相关的知识,希望对你有一定的参考价值。
最近在项目中看见了一种新的定义常量形式,了解了下JAVA的枚举类。
一、什么是枚举
枚举(enum)类型是Java5新增的特性,它是一种新的类型,允许用常量表示特定的数据片段,而且全部都已类型安全的形式表示。
二、为什么不用静态变量代替枚举类
public static final int SEASON_SPRING = 1;
public static final int SEASON_SUMMER = 2;
public static final int SEASON_FALL = 3;
public static final int SEASON_WINTER = 4;
枚举类更加直观,类型安全。使用常量会有以下几个缺陷:
1. 类型不安全。若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象。
2. 没有命名空间。开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。
三、枚举类的特性
枚举类更加直观,类型安全。使用常量会有以下几个缺陷:
- enum和class、interface的地位一样
- 使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类。枚举类可以实现一个或多个接口 不能再继承其他类 因JAVA是单继承的。
- 枚举类的所有实例都必须放在第一行展示,不需使用new 关键字,不需显式调用构造器。自动添加public static final修饰。
- 使用enum定义、非抽象的枚举类默认使用final修饰,不可以被继承。
- 枚举类的构造器只能是私有的。
四、枚举类的使用
定义枚举类:
package com;
public enum Color
RED, GREEN, BLANK, YELLOW
使用:
package com;
public class B
public static void main(String[] args)
System.out.println( isRed( Color.BLANK ) ) ; //结果: false
System.out.println( isRed( Color.RED ) ) ; //结果: true
static boolean isRed( Color color )
if ( Color.RED.equals( color ))
return true ;
return false ;
Switch语句中的使用:
package com;
public class B
public static void main(String[] args)
showColor( Color.RED );
static void showColor(Color color)
switch ( color )
case BLANK:
System.out.println( color );
break;
case RED :
System.out.println( color );
break;
default:
System.out.println( color );
break;
自定义函数:
package com;
public enum Color
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
private String name ;
private int index ;
private Color( String name , int index )
this.name = name ;
this.index = index ;
public String getName()
return name;
public void setName(String name)
this.name = name;
public int getIndex()
return index;
public void setIndex(int index)
this.index = index;
使用:
package com;
public class B
public static void main(String[] args)
//输出某一枚举的值
System.out.println( Color.RED.getName() );
System.out.println( Color.RED.getIndex() );
//遍历所有的枚举
for( Color color : Color.values())
System.out.println( color + " name: " + color.getName() + " index: " + color.getIndex() );
以上是关于JAVA枚举小结的主要内容,如果未能解决你的问题,请参考以下文章