java 枚举&注解学习笔记

java 枚举类

当需要定义一组常量时,可以使用枚举类

一、定义枚举类:

方式一:自定义枚举类(jdk5.0之前)

  1. persion对象的属性:使用final关键字修饰

  2. 创建类的构造器,并给对象的属性赋值

  3. 创建枚举类的多个对象

    public class demo1 {
        public static void main(String[] args) {
            System.out.println(persion.A.toString());
            System.out.println(persion.B.toString());
            System.out.println(persion.C.toString());
            System.out.println(persion.D.toString());
        }
        
    }
    
    class persion{
        //1.persion对象的属性:使用final关键字修饰
        private final String name;
        private final int age;
        private final char sex;
    
        //2.创建类的构造器,并给对象的属性赋值
        private persion(String name, int age, char sex){
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    
        //3.创建枚举类的多个对象
        public static final persion A = new persion("zhangsan",15,'男');
        public static final persion B = new persion("lisi",56,'女');
        public static final persion C = new persion("wangwu",27,'女');
        public static final persion D = new persion("laoliu",35,'男');
    
        public String getName() {
            return name;
        }
    
        public int getAge() {
            return age;
        }
    
        public char getSex() {
            return sex;
        }
    
        @Override
        public String toString() {
            return "persion{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", sex=" + sex +
                    '}';
        }
    }
    

方式二:使用enum关键字定义枚举类

  1. 提供枚举类的对象,对象之间使用",“分割,使用”;"结束

  2. 对象的属性

  3. 创建对象的构造器

    public class demo2 {
        public static void main(String[] args) {
            System.out.println(persion2.A.getAge());
            System.out.println(persion2.B.getName());
            System.out.println(persion2.C.getSex());
            System.out.println(persion2.D);
        }
    }
    
    enum persion2{
        //1.提供枚举类的对象,对象之间使用","分割,使用";"结束
        A("zhangsan",15,'男'),
        B("lisi",56,'女'),
        C("wnagwu",27,'女'),
        D("laoliu",35,'男');
    
        //2.对象的属性
        private final String name;
        private final int age;
        private final char sex;
    
        //3.创建对象的构造器
        private persion2(String name, int age, char sex){
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    
        public String getName() {
            return name;
        }
    
        public int getAge() {
            return age;
        }
    
        public char getSex() {
            return sex;
        }
    }
    

注意:使用enum关键字后,对象继承于Enum类,toString方法已被重写,会打印对象名

二、Enum类常用API

返回值方法名描述
StringtoString()返回声明中包含的此枚举常量的名称。
ObjectvalueOf(String name)返回与传入参数相同名称的枚举对象
Object[]values()返回该枚举类中的所有对象

java 注解

一、常见注解

  1. @Override

    表示方法声明旨在覆盖超类型中的方法声明。如果使用此注释类型注释方法,则除非至少满足以下条件之一,否则需要编译器生成错误消息:

    • 该方法将覆盖或实现在超类型中声明的方法。
    • 该方法具有与Object中声明的任何公共方法的[覆盖相同的签名
  2. @Deprecated

    注释@Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它是危险的,或者因为存在更好的替代方法。 编译器在不被弃用的代码中使用或覆盖不推荐使用的程序元素时发出警告。

  3. @SuppressWarnings

    表示在注释元素(以及注释元素中包含的所有程序元素)中应该抑制命名的编译器警告。请注意,给定元素中抑制的一组警告是所有包含元素中抑制的警告的超集。例如,如果您注释一个类来抑制一个警告并注释方法来抑制另一个警告,则两个警告将在该方法中被抑制。

    作为一种风格,程序员应该始终将这个注释用于最有效的嵌套元素。 如果要在特定方法中抑制警告,则应该注释该方法而不是其类。

二、自定义注解

  1. 注解声明为:@interface
  2. 内部定义成员,通常使用value表示
  3. 可以指定成员的默认值,使用default定义
  4. 如果自定义注解没有成员,表名是一个标记(标识作用)

三、JDK中的元注解

元注解用于修饰其他注解

  1. Retention:指示要注释具有注释类型的注解的保留时间

    • SOURCE 注释将被编译器丢弃。
    • CLASS 注释将由编译器记录在类文件中,但VM不需要在运行时保留。 (默认)
    • RUNTIME 注释将由编译器记录在类文件中,并由VM在运行时保留,因此可以反射读取。
  2. Target:指明被该注解修饰的注解能够修饰哪些元素

    Enum ConstantDescription
    ANNOTATION_TYPE注解类型声明
    CONSTRUCTOR构造函数声明
    FIELD字段声明(包括枚举常数)
    LOCAL_VARIABLE局部变量声明
    METHOD方法声明
    PACKAGE包装声明
    PARAMETER正式参数声明
    TYPE类,接口(包括注释类型)或枚举声明
    TYPE_PARAMETER键入参数声明
  3. Documented:

  4. Inherited:被该注解修饰的注解具有继承性

注解的开发:待。。。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值