java 基础之枚举
1.枚举类Enum
- Enum类是所有的枚举类的父类,但是在申明时并不需要extends申明。子类继承其方法。
- Enum类常用的方法
方法 | 描述 |
---|---|
String name() | 返回此枚举常量的名称 |
Static T valueOf (String name) | 指定名称的指定枚举类型的枚举常量 |
Static T [ ] values() | 返回该枚举类的所有枚举 |
int hashCode() | 返回此枚举常量的哈希码 |
以及从超类 Object 继承而来的方法等 |
2.自定义枚举类
- 创建一个 Student 枚举类,枚举常量均是 static final 的。相邻枚举常量用逗号隔开,最后一个用分号表示结束,申明的顺序影响 compareTo 方法。
public enum Student{
FIRST,
SECOND,
THREE;
}
3.创建枚举类对象
- 在java中,万物皆是对象,枚举也是一个对象,通常的我们实例化一个对象会去new一个,得到的每个实例,其hascode值一般情况下也不一样。但是枚举类的实例的个数是创建时就固定的,其构造方法也是私有的,并不能通过外部new得到。
- 获得其实例对象
Student s1=Student.valueOf("FIRST");
Student s2=Student.SECOND;
System.out.println(Student.FIRST.name());
System.out.println(s1.name());
- 获取所有的枚举
Student[] t = Student.values();
for (Student e : t) {
System.out.println(e);
}
4.创建枚举属性
- 枚举也是一个类,也可以拥有自己的属性,但是,由于枚举类的实例对象是创建类时就固定的,必须先有对象再有属性,因此属性的申明要在枚举申明之后,并提供相对应参数的构造方法。
public enum Student {
FIRST("张三"),
SECOND("李四"),
THREE("王五");
private String name;
Student(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
5.创建方法
- 也可以申明自己的方法,方法申明在枚举之后,当方法为抽象方法时,每个枚举量需实现自己的逻辑。
public enum Student {
FIRST("张三") {
@Override
public void doMyself() {
System.out.println("张三");
}
},
SECOND("李四") {
@Override
public void doMyself() {
System.out.println("李四");
}
},
THREE("王五") {
@Override
public void doMyself() {
System.out.println("王五");
}
};
public abstract void doMyself();
public void sayHello(){
System.out.println("oh");
}
private String name;
Student(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
this.name = name;
}
public String getName() {
return this.name;
}
}