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

Java学习笔记---枚举

2017-06-05 00:53 337 查看

Java学习笔记—枚举

什么是枚举?

枚举就是在一定的范围内取值,取得的值是范围内的一个

如下就不是枚举:(交通灯的三色)

public class TestEnum {
//传统方式
private int color;
public void test(){
//这里不会报错,但是10000不属于规定的范围
this.color = 10000; //Color1.RED;
}
}
class Color1{
public static final int RED = 1;//红灯亮为1
public static final int GREEN = 2;//绿灯亮为2
public static final int YELLOW = 3;//黄灯亮为3
}


第二种方式


public class TestEnum {
//第二种方式
private Color2 color;
public void test(){
this.color = Color2.RED; //避免 new Color2();
}
}
class Color2{
//构造方法私有化
private Color2(){}
public static final Color2 RED = new Color2();//红灯亮为1
public static final Color2 GREEN = new Color2();//绿灯亮为2
public static final Color2 YELLOW = new Color2();//黄灯亮为3
}


枚举方式,使用一个关键字:enum(枚举的构造方法也是私有的)


public class TestEnum {
//枚举方式
private Color3 color;
public void test(){
this.color = Color3.RED;
}
}
//使用枚举实现(即第二种方式的简写方式:运用了一个关键词enum)
enum Color3 {
RED,GREEN,YELLOW; //即Color3的3个实例;
}


特殊的枚举操作

在枚举类里面有构造方法

构造方法里面有参数,需要在每个实例上面都写参数

在枚举类里面有抽象方法

在枚举的每个实例里面都重写这个抽象方法

enum color11{
RED("red"){
@Override
public void print1(){
System.out.println("red");
}
},
GREEN("green"){
@Override
public void print1(){
System.out.println("red");
}
},
YELLOW("yellow"){
@Override
public void print1(){
System.out.println("red");
}
};
private color11 (String name) {}
//抽象方法
//当在枚举里面写了抽象方法之后,需要在每个实例上都实现抽象方法
public abstract void print1();
}


枚举的API的使用(常用方法 )

name ():返回枚举的名称

ordinal ():返回枚举的下标,下标从0开始

valueOf ( Class<t> enumType , String name):得到枚举的对象

在编译时生成的两个方法:

valueof (String name):转换枚举对象

values ():获取所有枚举对象数组

如下是以上方法的应用:

import org.junit.Ignore;
import org.junit.Test;

public class TestEnum2 {
//知道枚举的下标,得到枚举的对象和名称
@Test
public void test3(){
int idx2 = 2;
//得到对象
Color100[] cs = Color100.values();
//根据下标得到对象
Color100 c12 = cs[idx2];
//得到枚举名称
String name = c12.name();
System.out.println(name);
}

//知道枚举的名称,得到枚举的对象和下标
@Ignore
public void test2(){
String name = "GREEN";
//得到对象
Color100 c1 = Color100.valueOf(name);
//得到下标
int idx1 = c1.ordinal();
System.out.println(idx1);
}
//知道枚举的对象,得到枚举的名称和下标
@Ignore
public void test1(){
//得到枚举对象
Color100 c100 = Color100.RED;
//枚举的名称
String name = c100.name();
//枚举的下标
int idx = c100.ordinal();
System.out.println(name+" "+idx);
}
}
enum Color100{
RED,GREEN,YELLOW;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: