栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

枚举类与注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

枚举类与注解

枚举类与注解

类的对象 只有 有限个 , 确定的

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

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

*如何自定义 枚举类

方式一 : 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 中 注解的 新特性 : 可重复注解 类型注解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301782.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号