枚举就是用来定义一组常量,将其使用一个枚举符号进行组织
如,信号灯包括:红、黄、绿 3种颜色
如,四季包括:春、夏、秋、冬 4个季节
这些都可以通过枚举类型进行定义,管理和使用起来比较方便!
用法一、常量
package org.java.test.enumeration;
public class ClassA {
/**
* 枚举常量定义
*/
public static enum INSURED{
第一被保人,第二被保人,第三被保人
}
public static void main(String[] args) {
//取枚举中定义的常量
String insuredPerson = INSURED.第一被保人.name();
System.out.println(insuredPerson);
}
}
用法二、switch语句中使用枚举常量
package org.java.test.enumeration;
public class ClassB {
/**
* 枚举常量
*/
public static enum Signal {
GREEN,YELLOW,RED
}
/**
* switch语句中使用常量
*/
public void change(Signal color) {
switch(color) {
case RED:System.out.println("red");break;
case GREEN:System.out.println("green");break;
case YELLOW:System.out.println("yellow");break;
default:System.out.println("??");break;
}
}
public static void main(String[] args) {
ClassB obj = new ClassB();
obj.change(Signal.RED);
}
}
用法三、为枚举元素设置属性和方法
package org.java.test.enumeration;
public class ClassC {
/**
* 按事物分类--->用枚举定义
* 每种又包含不同的特性--->为枚举类型定义属性/方法
*/
public static enum Color {
//初始化枚举类型中的属性
RED("红色",1),GREEN("绿色",2),YELLOW("黄色",3);
//fields
private String name;
private int index;
//constructor
private Color(String name, int index) {
this.name = name;
this.index = index;
}
public static String getNameByIndex(int index) {
for(Color c : Color.values()) {
if(c.getIndex()==index) {
return c.getName();
}
}
return null;
}
@Override
public String toString() {
return this.name+"-"+this.index;
}
//getters
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;
}
}
public static void main(String[] args) {
Color[] colors = Color.values();
for(Color c : colors) {
System.out.println(c);
}
int index = 1;
String name = Color.getNameByIndex(index);
System.out.println(name);
}
}
用法四、实现接口
package org.java.test.enumeration;
public interface InterfaceA {
public void print();
}
package org.java.test.enumeration;
public class ClassD {
public static enum Color implements InterfaceA {
//elements
RED("红色","禁止"),YELLOW("黄色","小心"),GREEN("绿色","允许");
//field
private String flag;
private String info;
//constructor
private Color(String flag, String info) {
this.flag = flag;
this.info = info;
}
@Override
public void print() {
System.out.println(this.getFlag()+"--->"+this.getInfo());
}
//getters setters
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
}
public static void main(String[] args) {
for(Color c :Color.values()) {
c.print();
}
}
}