整理一些枚举类的笔记。。。
枚举类:
- 包含有限个成员对象而且默认被private static final修饰
- 私有构造方法
- 属性和字段private final修饰
比较
在JDK1.5之后引入了枚举类关键字enum,使得枚举类的创建变得更加简单明了,下面以一个例子说明
自定义枚举类
package Enum;
/**
* 枚举类理解
* @author hp
*
*/
public class MySeason {
// 1. 提供类的属性声明为private final
private final String name;
private final String desc;
// 2. 声明私有构造器,初始化final参数
private MySeason(String name,String desc){
this.name=name;
this.desc=desc;
}
// 3. 通过公共方法得到属性
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
// 4. 创建枚举类对象private static final修饰
private static final MySeason SPRING = new MySeason("spring", "spring is warm!");
private static final MySeason SUMMER = new MySeason("summer", "summer is hot!");
private static final MySeason AUTUMN = new MySeason("autumn", "autumn is cool!");
private static final MySeason WINTER = new MySeason("winter", "winter is cold!");
// 5. 可以有自己的方法
public void show(){
System.out.println("this is MySeason");
}
@Override
public String toString() {
return "MySeason [name=" + name + ", desc=" + desc + "]";
}
public static void main(String[] args) {
MySeason spring = MySeason.SPRING;
System.out.println(spring);
spring.show();
}
}
enum关键字创建枚举类
枚举类不支持继承,但是可以实现接口
package Enum;
/**
* 枚举类理解
* @author hp
*
*/
interface Info2{
public void say();
}
public enum MySeason2 implements Info2{
// 4. 创建枚举类对象private static final修饰
SPRING("spring", "spring is warm!"){
public void say(){
System.out.println("spring-say()...");
}
},
SUMMER("summer", "summer is hot!"){
public void say(){
System.out.println("summer-say()...");
}
},
AUTUMN("autumn", "autumn is cool!"){
public void say(){
System.out.println("autumn-say()...");
}
},
WINTER("winter", "winter is cold!"){
public void say(){
System.out.println("winter-say()...");
}
};
// 1. 提供类的属性声明为private final
private final String name;
private final String desc;
// 2. 声明私有构造器,初始化final参数
private MySeason2(String name,String desc){
this.name=name;
this.desc=desc;
}
// 3. 通过公共方法得到属性
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
// 5. 可以有自己的方法
public void show(){
System.out.println("this is MySeason");
}
@Override
public String toString() {
return "MySeason [name=" + name + ", desc=" + desc + "]";
}
public void say(){
System.out.println("接口的公共实现方法...");
}
public static void main(String[] args) {
MySeason2 spring = MySeason2.SPRING;
System.out.println(spring);
spring.show();
/*
* 两个方法
*/
// 1. 获得所有已的枚举类成员对象
MySeason2[] ms = MySeason2.values();
System.out.println(ms.length);
// 2. 根据枚举类成员对象名获得该对象,
//注意是枚举类内部成员名,在这里应该是SPRING而不是spring
System.out.println(MySeason2.valueOf("SPRING"));
}
}
测试输出:
MySeason [name=spring, desc=spring is warm!]
this is MySeason
4
MySeason [name=spring, desc=spring is warm!]