枚举类型
来源:互联网 发布:灵娱网络每天流水多少 编辑:程序博客网 时间:2024/05/29 13:41
枚举的关键字是enum,可以定义在当前的类中:
public enum sex{
man,woman
}
也可以定义在单独的类中,调用时,直接调用System.out.println(sex.man);
需要注意的是,sex.man的类型是枚举类型,也就是sex,例如sex mysex = sex.woman;
注意:1、枚举就相当于是一个类,里面的内容就相当于类的属性。
常用方法:
1、name()
获得当前枚举类型的名称:man
2、toString()
转换为字符串
3、ordinal()
获得当前类型的排序号,从0开始计算
4、valueOf("man")
将字符串类型转换为枚举类型
5、mysex.values()
将枚举类型转换为数组,可以对其进行遍历,注意:转换后数组的类型是枚举类型:sex[] arraySex = sex.values();
枚举的使用:
1、在JDK1.5之前,定义常量一般使用public static final ,现在可以使用枚举定义常量,而且枚举比常量提供了更多的方法:
enum Color{
RED,BLACK,YELLOW
}
使用枚举类型时,不需要实例化,可以直接使用:
System.out.println(Color.RED);
2、 在JDK1.5之后switch在支持int,char,byte,short等类型的基础上,也支持了enum类型(在JDK1.7后,switch支持了String!) 使用枚举,可以增强代码的可读性:
Color color = Color.RED;
switch(color){
case RED :
System.out.println("红色");
break;
case BLACK :
System.out.println("不是红色");
break;
case YELLOW :
System.out.println("不是红色");
break;
}
3、 向枚举中添加方法
枚举中的变量是可以加参数的,RED("红色",1), GREEN("绿色", 2),加了参数之后,必须相应的加上成员变量的定义和带参数的构造方法(构造方法必须是私有的);同时,可以加普通的方法:
enum Color{
RED("红色", 1),GREEN("绿色", 2),YELLO("黄色", 3);
// 成员变量
private Stringname;
private int index;
// 构造方法
private Color(String name,int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
returnname+"getName";
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
returnindex;
}
public void setIndex(int index) {
this.index = index;
}}
调用普通的方法时直接调用:
System.out.println(Color.getName(1));
4、 枚举中可以覆盖父类的方法:
// 覆盖方法
@Override
public StringtoString(){
return this.index + "_"+ this.name;
}
调用覆盖的方法:
System.out.println(Color.GREEN.toString());
5、 枚举类型都是继承自java.lang.Enum,由于java不支持多继承,所有枚举对象不能继承其他类。但是枚举类型也可以实现接口(实现接口时,需要同时实现接口的所有方法)。
6、 使用接口组织枚举(有什么用处???)
public interfaceFood {
enum Coffeeimplements Food {
BLACK_COFFEE,DECAF_COFFEE, LATTE,CAPPUCCINO
}
enum Dessertimplements Food {
FRUIT, CAKE,GELATO
}}
枚举集合:
枚举集合包括:java.util.EnumSet和java.util.EnumMap。EnumSet中元素不能重复,EnumMap中key是Enum类型,value是任意类型。
EnumMap的使用:
EnumMap em = newEnumMap(Color.class);
em.put(Color.RED,"hongse");
em.put(Color.GREEN,"lvse");
System.out.println(em);
EnumMap和其他Map类似,但是需要注意的是,实例化时需要将相应的枚举类传入,put对象时,key是enum对象。
EnumSet的使用:
EnumSetes = EnumSet.allOf(Color.class);
System.out.println(es);
EnumSet需要使用EnumSet.allOf()方法,将枚举类中所有的对象都放到EnumSet中.
说明:
1、 既然可以直接将枚举放入集合,为什么还要使用枚举集合呢,EnumMap中指定了是哪个枚举类型,其他枚举类型不可以加入;EnumSet可以直接将枚举类型直接转为集合类型,十分方便。- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- 枚举类型
- C#使用正则表达式
- 图片转换成base64编码
- Git:本地操作的一些命令
- linux-2-redis配置
- html适配移动开发需要加一行代码
- 枚举类型
- TextView字体
- spring的xml里加载properties数据
- JAVA给出对应字符串所有排列组合
- Kotlin语言编码规范
- 使用queryrunner操作数据库
- 正则
- C++文件读写详解(ofstream,ifstream,fstream)
- iOS学习之开发证书,描述文件,bundle ID的关系