您的位置:首页 > 编程语言 > Java开发

java枚举

2018-04-04 10:58 197 查看

一、概述

枚举是jdk1.5新增的功能

枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。

使用场合: 如根据编码获取一个字符串

java

SERVER_INNER(1,'服务器内部错误','zh-cn')


二、特征

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。

2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。

3.Enum默认实现了java.lang.Comparable接口。

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。

6.Enum还提供了values()方法,这个方法使你能够方便的遍历所有的枚举值。 Color [] arr = Color.values();

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

三、例子

package com.hesvit.test;
public enum Week {
MONDAY(1,"星期一","工作"),
TUESDAY(2,"星期二","吃饭"),
WEDNESDAY(3,"星期三","喝酒"),
THURSDAY(4,"星期四","打牌"),
FRIYDAY(5,"星期五","旅游"),
SATURDAY(6,"星期六","搬砖"),
SUNDAY(7,"星期日","开车");

private Week(int type,String weekname,String something) {
this.type = type;
this.weekname = weekname;
this.something = something;
}

private int type;
private String weekname;
private String something;

public Integer getType() {
return type;
}
public String getWeekname() {
return weekname;
}
public String getSomething() {
return something;
}

/**
* 根据type获取枚举
* LIPING
*/
public static Week getWeekByType(int type) {
for(Week wk : values()) {
if (wk.type == type) {
return wk;
}
}
return null;
}

public static void main(String[] args) {
System.out.println("打印-1>:"+Week.FRIYDAY.getType());
System.out.println("打印-2>:"+Week.FRIYDAY.getWeekname());
System.out.println("打印-3>:"+Week.FRIYDAY.toString());
System.out.println("打印-4>:"+Week.valueOf("FRIYDAY"));
System.out.println("打印-5>:"+Week.getWeekByType(Week.SUNDAY.getType()).getSomething());
}
// 打印的结果
//  打印-1>:5
//  打印-2>:星期五
//  打印-3>:FRIYDAY
//  打印-4>:FRIYDAY
//  打印-5>:开车
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: