//枚举:指定是一个类中,存在几个固定的该类对象,用来描述几个固定值
//比如方向:前后左右。
//JDK1.5 之前需要自己定义
Direction front = Direction.front;
Direction behind = Direction.behind;
Direction left = Direction.left;
Direction right = Direction.right;
System.out.println(front.name);
System.out.println(behind.name);
System.out.println(left.name);
System.out.println(right.name);
front.show("前");
behind.show("后");
left.show("左");
right.show("右");
//
public class Direction { //自定义枚举类
//定义4个该类的对象
public static final Direction front=new Direction("前"); {
@Override
public void show(String name) {
System.out.println(name);
}
};
public static final Direction behind = new Direction("后"); {
@Override
public void show(String name) {
System.out.println(name);
}
};
public static final Direction left = new Direction("左"); {
@Override
public void show(String name) {
System.out.println(name);
}
};
public static final Direction right = new Direction("右"); {
@Override
public void show(String name) {
System.out.println(name);
}
};
String name;
private Direction(String name) {
this.name = name;
}
//提供抽象方法
public abstract void show(String name);
}
//JDK1.5之后,要定义一个枚举类,更加简洁了。Java提供了一个关键字 enum
Direction front = Direction.FRONT;
Direction behind = Direction.BEHIND;
Direction left = Direction.LEFT;
Direction right = Direction.RIGHT;
System.out.println(front.toString());
System.out.println(behind);
System.out.println(left);
System.out.println(right);
//
public enum Direction {
//枚举项
FRONT,BEHIND,LEFT,RIGHT;
}
加名字
Direction front = Direction.FRONT;
String name = front.name;
System.out.println(name);
//
public enum Direction {
//枚举项
FRONT("前"), BEHIND("后"), LEFT("左"), RIGHT("右"),
;
String name;
private Direction(String name) { //枚举中的构造方法是私有修饰的
this.name = name;
}
}
加方法
Direction left = Direction.LEFT;
left.show("左");
}
//
public enum Direction { //枚举默认就是抽象的
//枚举项
FRONT("前"){
@Override
public void show(String name) {
System.out.println(name);
}
}, BEHIND("后") {
@Override
public void show(String name) {
System.out.println(name);
}
}, LEFT("左") {
@Override
public void show(String name) {
System.out.println(name);
}
}, RIGHT("右") {
@Override
public void show(String name) {
System.out.println(name);
}
},
;
String name;
private Direction(String name) { //枚举中的构造方法是私有修饰的
this.name = name;
}
//提供抽象方法
public abstract void show(String name);
}
每个枚举项,都编有编号,你可以通过ordinal()获取枚举项的编号,编号从0开始
System.out.println(Direction.FRONT.ordinal());
Direction left=Direction.LEFT;
int index=left.ordinal;
System.out.println(index);
String s = left.toString();
String name = left.name();
System.out.println(s);
System.out.println(name);
//静态方法 values()获取所有的枚举项
Direction[] values= Direction.values();
for (Direction value : values) {
System.out.println(value.name());
}
//
public enum Direction{
//枚举项必须位于第一行,每个枚举项右逗号隔开,最后一个枚举项用分号结尾
FRONT, BEHIND, LEFT, RIGHT;
}
//
//byte short int char JDK1.7 String JDK1.5 支持枚举
//swithch 语句支持枚举类型
Direction front = Direction.FRONT;
switch (front){
case FRONT:
System.out.println("执行 前 这段代码");
break;
case BEHIND:
System.out.println("后");
break;
case LEFT:
System.out.println("左");
break;
case RIGHT:
System.out.println("右");
break;
//单例模式:允许内存中只能存在该类的一个对象
Student student = Student.getStudent();
//
public class Student {
private static final Student student = new Student();
private Student() {
}
public static Student getStudent() {
return student;
}
}
//
Teacher teacher = Teacher.TEACHER;
//
//如果我们这个枚举类,只有一个枚举项,那他也是一个单例模式
public enum Teacher {
TEACHER;
}