枚举的构造
若某事物的取值只有有限个,可以一个个罗列出来,则这个列举出来的类型就叫做枚举类型。
(1)使用public static 修饰的方法构造枚举
public class Size {
private int size=1;
//用staic final修饰表示常量
public static final Size SMALL=new Size(1);
public static final Size MIDDLE=new Size(2);
public static final Size BIG=new Size(3);
private Size(int size){
this.size=1;
}
public int getSize(){
return size;
}
}
public class EnumTest {
public static void main(String[] args) {
if(Size.BIG==Size.BIG)
System.out.println("相同的类型");
else
System.out.println("不同的类型");
}
}
结果为 相同的类型
(2)使用enum关键字构造枚举
- 使用public static final表示的常量描述较为繁琐,使用enum关键字来定
义枚举类型取代常量,枚举类型是从Java5开始增加的一种引用数据类型。 - 枚举值就是当前类的类型,也就是指向本类的对象,默认使用public
static final关键字共同修饰,因此采用枚举类型.的方式调用。 - 枚举类可以自定义构造方法,但是构造方法的修饰符必须是private,默
认也是私有的。
使用enum关键字后(1)中的枚举定义可以简化为
public enum SizeEnum {
BIG(3),MIDDLE(2),SMALL(1);
private int size=3;
private SizeEnum(int size){
this.size=size;
}
}
再进一步简化为
public enum SizeEnum {
BIG,MIDDLE,SMALL;
}
可见使用enum关键字后,省略了static、final等关键字,变得更加方便,但本质上还是与之前相同。
Enum类型的常用方法
| 方法 | 作用 |
|---|---|
| static T[ ] values() | 获得当前枚举类型的所有对象 |
| String toString() | 返回当前枚举对象的名称 |
| int ordinal() | 获取当前枚举对象在枚举类中的索引位置 |
| int compareTo(T o) | 比较两枚举对象在定义中的顺序 |
| 枚举类.class.getEnumConstants()[枚举索引] | 通过索引获取枚举 |
枚举类型对接口的实现
枚举类型实现接口需要实现接口的抽象方法,此时有两个选择:一、在枚举类型中重写方法一次。二、对枚举类型中的每个对象重写一次方法,这样可以做到每个对象的方法都不相同。
定义接口
public interface EnumInterface {
public abstract void print();
}
(1)重写方法一次
public enum SizeEnum implements EnumInterface{
BIG,MIDDLE,SMALL;
@Override
public void print() {
System.out.println("在类型中重写方法一次");
}
}
main方法
public class EnumTest {
public static void main(String[] args) {
//获取SizeEnum的所有对象
SizeEnum[] sizes=SizeEnum.values();
//对每个枚举对象调用print方法
for (SizeEnum s:sizes) {
System.out.print(s.toString()+":");
s.print();
}
}
}
结果如下

可见所有对象调用的方法相同。
(2)对每个对象重写一次方法,SizeEnum修改为
public enum SizeEnum implements EnumInterface{
BIG{
@Override
public void print(){
System.out.println("为BIG对象重写方法");
}
},MIDDLE{
@Override
public void print(){
System.out.println("为MIDDLE对象重写方法");
}
},SMALL{
@Override
public void print(){
System.out.println("为SMALL对象重写方法");
}
};
}
main方法不变,结果为

本文介绍了枚举类型的两种构造方式:使用public static修饰的方法和使用enum关键字。并详细讲解了enum关键字的使用方法,包括如何定义枚举类型、枚举类的方法及其实现接口的方式。
1257

被折叠的 条评论
为什么被折叠?



