1.枚举类的理解:
枚举类本质上也是一种类,只不过这个类的对象是有限的、固定的几个,不能让用户随易创建。
2.举例:
(1)星期:Monday(星期一).......Sunday(星期天)
(2)性别:Man(男)、Woman(女)
(3)月份:January(1月)......December(12月)
(4)季节:Spring(春节)......Winter(冬天)
(5) 三原色:red(红色)、green(绿色)、blue(蓝色)
(6)支付方式:Cash(现金)、WechatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡)
(7)就职状态:Busy(忙碌)、Free(空闲)、Vocation(休假)、Dimission(离职)
(8)订单状态:Nonpayment(未付款)、Paid(已付款)、Fulfilled(已配货)、Delivered(已发货)、Checked(已检查的)
(9)线程状态:创建、就绪、运行、阻塞、死亡
3.开发中的建议
开发中,如果针对某个类,其实例是确定个数。则推荐此类声明为枚举类。
如果枚举类中实例只有一个,则可以看成是一个单例的实现方式。
4.JDK5.0中使用enum定义枚举类
详情见以下代码:
enum season{
//1.必须在枚举类开头声明多个对象,对象之间使用,隔开
spring("春天","万物复苏"),
summer("夏天","热的要死"),
fall("秋天","都黄了"),
winter("冬天","冻得要死");
//2.声明当前类的对象的实例变量,使用 private final来修饰
private final String seasonname;
private final String seasondesc;
//3.私有化类的构造器
private season(String seasonname, String seasondesc) {
this.seasonname = seasonname;
this.seasondesc = seasondesc;
}
//4.提供实例变量的实例方法
public String getSeasonname() {
return seasonname;
}
public String getSeasondesc() {
return seasondesc;
}
@Override
public String toString() {
return "season{" +
"seasonname='" + seasonname + '\'' +
", seasondesc='" + seasondesc + '\'' +
'}';
}
}
5.Enum中的常用方法
(1)使用enum关键字定义的枚举类,默认其父类是Java.long.Enum类。
使用enum关键字定义的枚举类,不要在显示的定义其父类,否则报错。
(2)熟悉Enum中常用的方法
String toString():默认返回常量名(对象名),可以继续手动重写该方法!
(值得关注)static 枚举类型 [] values():返回枚举型的对象数组。该方法可以很方便的遍历所有的枚举值,是一个静态方法。
(值得关注)static 枚举类型 valueOf(String name):可以把一个字符串转化为对应枚举类的对象。要求字符串必须是枚举类对象的“名字”。
String name():得到当前枚举类的名称。建议优先使用toString()。
int ordinal():返回当前枚举常量的次序号,默认从0开始。
6.枚举类实现接口的操作
情况1:枚举类实现接口,在枚举类中重写接口中的抽象方法,当通过不同的枚举类对象调用此方法时,执行的是同一个方法。
情况2: 让枚举类的每一个对象重写接口中的抽象方法。当通过不同的枚举类对象调用此方法时,执行的是不同的实现的方法。
例子:
interface info{
void show();
}
enum season{
//1.必须在枚举类开头声明多个对象,对象之间使用,隔开
spring("春天","万物复苏"){
public void show(){
System.out.println("春天在哪里");
}
},
summer("夏天","热的要死"){
public void show(){
System.out.println("夏日炎炎");
}
},
fall("秋天","都黄了"){
public void show(){
System.out.println("果实累累");
}
},
winter("冬天","冻得要死"){
public void show(){
System.out.println("银装素裹");
}
};
//2.声明当前类的对象的实例变量,使用 private final来修饰
private final String seasonname;
private final String seasondesc;
//3.私有化类的构造器
private season(String seasonname, String seasondesc) {
this.seasonname = seasonname;
this.seasondesc = seasondesc;
}
//4.提供实例变量的实例方法
public String getSeasonname() {
return seasonname;
}
public String getSeasondesc() {
return seasondesc;
}
@Override
public String toString() {
return "season{" +
"seasonname='" + seasonname + '\'' +
", seasondesc='" + seasondesc + '\'' +
'}';
}
}
今天的内容就到这里了,给小编点个关注点个赞吧!