• Java回顾-枚举类


    一、使用关键字enum定义枚举类

            如果类的对象只有有限个,确定的,强烈建议使用枚举类。JDK5.0后用关键字enum定义。

            -枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰

            -枚举类的使用 private final 修饰的属性应该在构造器中为其赋值

           -若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应地传入参数

            -使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类

            -enum的toString方法默认输出对象的名字,若想自定义输出内容要重写

            -必须在枚举类的第一行声明枚举类对象

    1. enum Season {
    2. SPRING("1","IlikeIt"),
    3. SUMMER("2","IHateIt"),
    4. AUTUMN("3","IlikeIt"),
    5. WINTER("4","IHateIt");
    6. private final String name;
    7. private final String desc;
    8. Season(String name, String desc) {
    9. this.name = name;
    10. this.desc = desc;
    11. }
    12. public String getName() {
    13. return name;
    14. }
    15. public String getDesc() {
    16. return desc;
    17. }
    18. @Override
    19. public String toString() {
    20. return "Season{" +
    21. "name='" + name + '\'' +
    22. ", desc='" + desc + '\'' +
    23. '}';
    24. }
    25. }
    26. 测试:
    27. System.out.println(Season.SPRING);
    28. System.out.println(Season.SUMMER);
    29. Season{name='1', desc='IlikeIt'}
    30. Season{name='2', desc='IHateIt'}

    二、Enum类的主要方法

            values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的 枚举值。

            valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常: IllegalArgumentException。

             toString():返回当前枚举类对象常量的名称

    1. System.out.println(Season.values()[0]);
    2. System.out.println(Season.valueOf("SUMMER"));
    3. System.out.println(Season.WINTER.toString());
    4. Season{name='1', desc='IlikeIt'}
    5. Season{name='2', desc='IHateIt'}
    6. Season{name='4', desc='IHateIt'}

    三、实现接口的枚举类

            对于实现了接口的枚举类,我们要在每个枚举对象中实现接口中的方法。 

    1. interface info{
    2. void voice();
    3. }
    4. enum Season implements info{
    5. SPRING("1","IlikeIt"){
    6. @Override
    7. public void voice() {
    8. System.out.println("春天");
    9. }
    10. },
    11. SUMMER("2","IHateIt") {
    12. @Override
    13. public void voice() {
    14. System.out.println("夏天");
    15. }
    16. },
    17. AUTUMN("3","IlikeIt") {
    18. @Override
    19. public void voice() {
    20. System.out.println("秋天");
    21. }
    22. },
    23. WINTER("4","IHateIt") {
    24. @Override
    25. public void voice() {
    26. System.out.println("冬天");
    27. }
    28. };
    29. private final String name;
    30. private final String desc;
    31. Season(String name, String desc) {
    32. this.name = name;
    33. this.desc = desc;
    34. }
    35. public String getName() {
    36. return name;
    37. }
    38. public String getDesc() {
    39. return desc;
    40. }
    41. @Override
    42. public String toString() {
    43. return "Season{" +
    44. "name='" + name + '\'' +
    45. ", desc='" + desc + '\'' +
    46. '}';
    47. }
    48. }
    49. 测试:
    50. Season.AUTUMN.voice();
    51. Season.WINTER.voice();
    52. 秋天
    53. 冬天

  • 相关阅读:
    uniapp uni-list-item @click,uniapp uni-list-item带参数跳转
    Spring框架(七):Spring的Web配置应用
    Java中mybatis的Mpper代理开发的详细使用步骤
    Python入门项目,从不会编程到完成这个小游戏,也就两天时间
    Codeforces Round #796 (Div. 2) vp报告A-D
    忘记开机密码啦!我教你用ventoy找回密码
    【深度学习】 自编码器(AutoEncoder)
    mac 安装部署mongoDB社区版
    C语言经典算法实例6:斐波那契数列
    【文件读取/包含】任意文件读取漏洞 afr_2
  • 原文地址:https://blog.csdn.net/weixin_62427168/article/details/125466671