java什么是类枚举类_Java 枚举类 详解

1、枚举是什么?

Java中的枚举其实是一种语法糖,在 JDK 1.5之后出现,用来表示固定且有限个的对象。比如一个季节类有春、夏、秋、冬四个对象;一个星期有星期一到星期日七个对象。这些明显都是固定的,且有限个。

2、枚举类和普通类的区别

①、使用 enum 定义的枚举类默认继承 java.lang.Enum 类,即枚举类是不能再继承别的类了。而普通类的一般父类默认是 Object

②、枚举类的构造器只能使用 private 定义,而普通类的还可以用 public 修饰

③、枚举类的所有实例必须在枚举类中显示列出(,分隔   ;结尾),列出的实例系统会默认自动添加 public static final 修饰

④、所有的枚举类都提供了一个 values() 方法,可以用来遍历枚举值

3、怎么用枚举?

首先我们看,以一个季节类有春、夏、秋、冬四个对象为例:在 JDK 1.5以前是怎么表示的呢?

创建一个 季节类:

public class Season {

//属性不能修改,用 final 修饰

private final String name;

private final String desc;

//因为枚举类的对象是有限的,即我们不能再外面 new Season(),所以构造器私有化

private Season(String name,String desc) {

this.name = name;

this.desc = desc;

}

//不能再外面new Season(),那么内部必须创建出对象

//外界直接通过类名来访问,用 static 修饰

//外界不能修改,用 final 修饰

public static final Season SPRING = new Season("春天", "春暖花开");

public static final Season SUMMER = new Season("夏天", "炎炎盛夏");

public static final Season FALL = new Season("秋天", "秋高气爽");

public static final Season WINTER = new Season("冬天", "大雪纷飞");

@Override

public String toString() {

return "Season [name=" + name + ", desc=" + desc + "]";

}

}

测试:

public class SeasonTest {

public static void main(String[] args) {

System.out.println(Season.SPRING);

System.out.println(Season.SUMMER);

System.out.println(Season.FALL);

System.out.println(Season.WINTER);

}

}

结果为:

Season [name=春天, desc=春暖花开]

Season [name=夏天, desc=炎炎盛夏]

Season [name=秋天, desc=秋高气爽]

Season [name=冬天, desc=大雪纷飞]

使用 Enum 来表示季节类:

public enum SeasonEnum {

//必须在第一行写出有哪些枚举值

SPRING("春天", "春暖花开"),

SUMMER("夏天", "炎炎盛夏"),

FALL("秋天", "秋高气爽"),

WINTER("冬天", "大雪纷飞");

private final String name;

private final String desc;

private SeasonEnum(String name, String desc) {

this.name = name;

this.desc = desc;

}

}

测试:

public static void main(String[] args) {

System.out.println(SeasonEnum.SPRING); //SPRING

//用 values() 来获取所有的枚举值

for(SeasonEnum s : SeasonEnum.values()){

System.out.println(s);

}

}

枚举类还能实现接口:

第一步:定义一个接口,方法是返回季节的月份

public interface SeasonEnumImpl {

//用来返回季节的月份

String getMonth();

}

第二步:季节类实现接口,并实现接口中的方法

public enum SeasonEnum implements SeasonEnumImpl{

//必须在第一行写出有哪些枚举值

SPRING("春天", "春暖花开"){

@Override

public String getMonth() {

return "12-2";

}

},

SUMMER("夏天", "炎炎盛夏"){

@Override

public String getMonth() {

return "3-5";

}

},

FALL("秋天", "秋高气爽"){

@Override

public String getMonth() {

return "6-8";

}

},

WINTER("冬天", "大雪纷飞"){

@Override

public String getMonth() {

return "9-11";

}

};

private final String name;

private final String desc;

private SeasonEnum(String name, String desc) {

this.name = name;

this.desc = desc;

}

}

测试:

public static void main(String[] args) {

System.out.println(SeasonEnum.SPRING); //SPRING

//用 values() 来获取所有的枚举值

for(SeasonEnum s : SeasonEnum.values()){

System.out.println(s.getMonth());

}

}

结果为:

SPRING

12-2

3-5

6-8

9-11

注意:

①、枚举类可以作为 switch--case 的表达式(JDK 1.5以后)

②、如果枚举类的对象只有一个,那么可以作为单例模式的实现

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的switch语句可以使用枚举类作为条件进行匹配。引用主要介绍了Java枚举类型在switch语句中的正确使用方法,通过示例代码详细展示了如何使用枚举类型进行条件匹配。这对于学习和工作都具有一定的参考价值。 在Java 8之后,switch语句还可以使用String型作为条件进行匹配。为了提升代码的可靠性与重用性,可以将String型转换成枚举类,然后再进行匹配。引用提到了这一点。 在使用switch语句时,需要注意的是,case后面使用的是枚举类型,不需要加上枚举类名,而switch语句的输入是枚举类的实例。这一点需要特别留意。引用中也提到了这个注意事项。 总结起来,Java中的switch语句可以使用枚举类作为条件进行匹配,这样可以提高代码的可读性和可维护性。另外,在使用switch语句时,需要注意case后面使用的是枚举类型,不需要加上枚举类名,而switch语句的输入是枚举类的实例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java枚举类型在switch语句正确使用方法详解](https://download.csdn.net/download/weixin_38599412/12723487)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Java Switch中使用多字段的枚举类](https://blog.csdn.net/Saintmm/article/details/126750804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值