枚举类与注解

本文详细介绍了Java中的枚举类,包括其定义、使用场景和如何定义枚举类,同时展示了枚举类实现接口的两种方式。此外,还讲解了注解的用途,如生成文档、编译时检查,并探讨了自定义注解及其元注解的使用。最后,提到了Java 8的可重复注解和类型注解新特性。
摘要由CSDN通过智能技术生成

文章目录

枚举类

枚举类的使用:

  1. 枚举类的理解:类的对象只有有限个,确定的
  2. 当需要定义一组常量时,建议使用枚举类
  3. 如果枚举类只有一个对象,则可以作为单例模式的实现方式

如何定义枚举类:

  • 方式一:jdk1.5之前自定义枚举类
  • 方式二:jdk1.5可以使用enum关键字定义枚举类
    父类不是Object类
//自定义枚举类
class Sex1{
    //1.声明Sex对象的属性,private final修饰
    private final char sex1;

    //2.私有化类的构造器,给属性赋值
    private Sex1(char sex1) {
        this.sex1 = sex1;
    }

    //3.提供当前枚举类多个对象
    public static final Sex1 MAN = new Sex1('男');
    public static final Sex1 WOMAN = new Sex1('女');

    //4.其它需求:

    public char getSex() {
        return sex1;
    }

    @Override
    public String toString() {
        return "Sex1{" +
                "sex1=" + sex1 +
                '}';
    }
}
//enum关键字定义枚举类
enum Sex2{
    //1.提供当前枚举类多个对象,多个对象用逗号隔开
    MAN('男'),
    WOMAN('女');

    //2.声明Sex对象的属性,private final修饰
    private final char sex2;

    //3.私有化类的构造器,给属性赋值
    private Sex2(char sex2) {
        this.sex2 = sex2;
    }

    //4.其它需求:

    public char getSex() {
        return sex2;
    }

    @Override
    public String toString() {
        return "Sex2{" +
                "sex2=" + sex2 +
                '}';
    }
}

Enum类的主要方法:

  • values()方法:返回枚举类型的对象数组。可以遍历所有枚举值
  • valueOf(String objName):返回枚举类中名为objName的对象

使用enum关键字定义的枚举类实现接口的情况:

  • 情况一:实现接口,在enum中实现抽象方法
  • 情况二:让枚举类的对象分别实现接口中的抽象方法
//四:使用enum关键字定义的枚举类实现接口的情况

interface info{
    void show();
}

enum Sex3 implements info{
    //让枚举类的对象分别实现接口中的抽象方法
    MAN('男'){
        @Override
        public void show() {
            System.out.println("男生");
        }
    },
    WOMAN('女'){
        @Override
        public void show() {
            System.out.println("女生");
        }
    };

    private final char sex3;

    private Sex3(char sex3) {
        this.sex3 = sex3;
    }

/*    //实现接口,在enum中实现抽象方法
    @Override
    public void show() {
        System.out.println("性别");
    }*/
}

注解

注解的使用:

  • 生成文档相关的注解
  • 在编译时进行格式检查
  •   @Override,@Deprecate,@SuppressWarnings
    
  • 跟踪代码依赖性,实现替代配饰文件功能

自定义注解:
参照@SuppressWarnings定义

  • 注解声明为:@interface,内部定义成员,通常使用value表示
  • 可以指定成员的默认值,使用default定义,如果自定义注解没有成员,表示是一个表示作用

jdk提供的四种元注解:

  • 元注解:对现有的注解进行解释说明的注解
  • Retention:指定所修饰的Annotation的生命周期:SOURCE/CLASS/RUNTIME
  • 只有声明为RUNTIME生命周期的注解,才能通过反射获取
  • Target:用于指定被修饰的Annotation能用于修饰指定程序元素
  • Documented:表示所修饰的注解在被javadoc解析时保留下来
  • Inherited:被它修饰的Annotation将具有继承性

jdk8新特性:可重复注解,类型注解:

  • 可重复注解:在自定义注解上声明@Repeatable,成员值为第二个自定义注解名.class
  • 自定义注解的Target和Retention和第二个自定义注解相同
  • 类型注解(Target):ElementType.TYPE_PARAMETER 表示该注解能写在类型变量的声明语句中
  • ElementType.TYPE_USE 表示该注解能写在使用类型的任何语句中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩尼诗道-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值