枚举类与注解

本文详细介绍了Java中的枚举类及其使用,包括两种定义枚举类的方法,并展示了枚举类的常见方法。此外,还讲解了注解的基本概念,自定义注解的创建,以及元注解的使用。内容涵盖了枚举类作为单例模式实现、枚举类的属性和方法,以及注解在代码中的应用和解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举类与注解
在这里插入图片描述
类的对象 只有 有限个 , 确定的

当需要 定义 一组 常量 时,推荐 枚举类

如果 枚举类 中 只有 一个 对象 ,则可以 作为 单例 模式的 实现方式

*如何自定义 枚举类

方式一 : jdk 1.5 之前, 自定义 枚举类

package SeaTest;
//自定义一个枚举类
public class SeasonTest {

    public static void main(String[] args) {
        final Season spring = Season.SPRING;
        System.out.println(spring);

        Season season=new Season("1","2");
        System.out.println(season);
    }

    //自定义枚举类
    static class Season{
        //1.声明 seanson 对象 属性
        private final String seasonName;
        private final String seaonDesc;
        //2.私有化构造器,给对象赋值
        private Season(String seasonName,String seaonDesc){
            this.seasonName=seasonName;
            this.seaonDesc=seaonDesc;
        }
        //3.提供当前 枚举类的 多个对象

        public static final Season SPRING =new Season("春天","春1");
        public static final Season SUMMER =new Season("夏天","春2");
        public static final Season FULL   =new Season("秋天","春3");
        public static final Season WINTER =new Season("冬天","春4");
        //4.其他诉求 : 获取 枚举类对象的属性

        public String getSeasonName() {
            return seasonName;
        }

        public String getSeaonDesc() {
            return seaonDesc;
        }

        @Override
        public String toString() {
            return "Season{" +
                    "seasonName='" + seasonName + '\'' +
                    ", seaonDesc='" + seaonDesc + '\'' +
                    '}';
        }
    }
}
Season{seasonName='春天', seaonDesc='春1'}
Season{seasonName='1', seaonDesc='2'}

方式二 : jdk 5.0 之后 , 使用 关键字 enum 定义 枚举类

package SeaTest;
//自定义一个枚举类
public class SeasonTest2 {

    public static void main(String[] args) {
        final Season full = Season.FULL;
        System.out.println(full);

        //定义枚举类 默认 继承于 class java.lang.Enum
        System.out.println(full.getClass().getSuperclass());
    }

    //使用关键字 enum定义枚举类
    enum  Season{
        //1.提供当前枚举类对象,多个对象之间用 “,”隔开,“;”结尾 置顶
         SPRING ("春天","春1"),
         SUMMER ("夏天","春2"),
         FULL   ("秋天","春3"),
         WINTER ("冬天","春4");



        //1.声明 seanson 对象 属性
        private final String seasonName;
        private final String seaonDesc;
        //2.私有化构造器,给对象赋值
        private Season(String seasonName,String seaonDesc){
            this.seasonName=seasonName;
            this.seaonDesc=seaonDesc;
        }
        //3.提供当前 枚举类的 多个对象


        //4.其他诉求 : 获取 枚举类对象的属性

        public String getSeasonName() {
            return seasonName;
        }

        public String getSeaonDesc() {
            return seaonDesc;
        }

        @Override
        public String toString() {
            return "Season{" +
                    "seasonName='" + seasonName + '\'' +
                    ", seaonDesc='" + seaonDesc + '\'' +
                    '}';
        }
    }
}
Season{seasonName='秋天', seaonDesc='春3'}
class java.lang.Enum

** emun类 中 的 常用方法
在这里插入图片描述
在这里插入图片描述

package SeaTest;
//自定义一个枚举类
public class SeasonTest2 {

    public static void main(String[] args) {
        final Season1 full = Season1.FULL;
        System.out.println(full);
        System.out.println("----------------------");
        //定义枚举类 默认 继承于 class java.lang.Enum
        System.out.println(full.getClass().getSuperclass());
        System.out.println("----------------------");
        Season1 full1 = Season1.valueOf("FULL");
        System.out.println(full1);
        System.out.println("----------------------");
        final Season1[] values = Season1.values();
        for (Season1 value : values) {
            System.out.println(value);
        }
    }

    //使用关键字 enum定义枚举类
    enum  Season1{
        //1.提供当前枚举类对象,多个对象之间用 “,”隔开,“;”结尾 置顶
         SPRING ("春天","春1"),
         SUMMER ("夏天","春2"),
         FULL   ("秋天","春3"),
         WINTER ("冬天","春4");



        //1.声明 seanson 对象 属性
        private final String seasonName;
        private final String seaonDesc;
        //2.私有化构造器,给对象赋值
        private Season1(String seasonName,String seaonDesc){
            this.seasonName=seasonName;
            this.seaonDesc=seaonDesc;
        }
        //3.提供当前 枚举类的 多个对象


        //4.其他诉求 : 获取 枚举类对象的属性

        public String getSeasonName() {
            return seasonName;
        }

        public String getSeaonDesc() {
            return seaonDesc;
        }

        @Override
        public String toString() {
            return "Season{" +
                    "seasonName='" + seasonName + '\'' +
                    ", seaonDesc='" + seaonDesc + '\'' +
                    '}';
        }
    }
}
Season{seasonName='秋天', seaonDesc='春3'}
----------------------
class java.lang.Enum
----------------------
Season{seasonName='秋天', seaonDesc='春3'}
----------------------
Season{seasonName='春天', seaonDesc='春1'}
Season{seasonName='夏天', seaonDesc='春2'}
Season{seasonName='秋天', seaonDesc='春3'}
Season{seasonName='冬天', seaonDesc='春4'}

Process finished with exit code 0

枚举类实现 接口
在这里插入图片描述
在这里插入图片描述
** 注解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 自定义 注解

在这里插入图片描述

关键字 @interface

    1. 注解声明 @interface
    1. 内部定义成员 ,通常 是 value 表示
    1. 可以指定 成员的 默认值 ,使用 default 定义
    1. 如果自定义 注解 没有成员 ,表明 是 一个标识作用
    1. 如果注解 有成员 , 在使用时, 需要指明 成员的 值
    1. 自定义 注解 必须 配上 注解的信息 处理 流程 (使用反射)
  • 7.通常 会指明 @Retention @Target
package SeaTest;

public @interface MyAnnotation {

    String[] value() default "hi";
}
@MyAnnotation(value = "dy")
class Test{

}

JDK 5 提供的 元注解

在这里插入图片描述
元注解 : 对现有的注解 进行 解释说明
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
jdk8 中 注解的 新特性 : 可重复注解 类型注解
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值