Java之枚举与注解

枚举与注解

枚举

1、枚举

枚举类型的对象是有限、固定的几个常量对象。

2、语法格式

//形式一:枚举类型中只有常量对象列表
【修饰符】 enum 枚举类型名{
    常量对象列表
}

//形式二:枚举类型中只有常量对象列表
【修饰符】 enum 枚举类型名{
    常量对象列表;
    其他成员列表;
}

说明:常量对象列表必须在枚举类型的首行

3、在其他类中如何获取枚举的常量对象

//获取一个常量对象
枚举类型名.常量对象名
​
//获取一个常量对象
枚举类型名.valueOf("常量对象名")
    
//获取所有常量对象
枚举类型名[] all = 枚举类型名.values();

4、枚举类型的特点

(1)枚举类型有一个公共的基本的父类,是java.lang.Enum类型,所以不能再继承别的类型

(2)枚举类型的构造器必须是私有的

(3)枚举类型可以实现接口

扫描二维码关注公众号,回复: 6575391 查看本文章

interface MyRunnable{
    void run();
}
enum Gender implements MyRunnable{
    NAN,NV;
    public void run(){
        //...
    }
}
//或
enum Gender implements MyRunnable{
    NAN{
        public void run(){
            //...
        }
    },NV{
        public void run(){
        //...
           }
    };
}

5、父类java.lang.Enum类型

(1)构造器

protected Enum(String name, int ordinal):由编译器自动调用

(2)String name():常量对象名

(3)int ordinal():返回常量对象的序号,第一个的序号是0

(4)String toString():返回常量对象名,如果子类想重写,需要手动

(5)int compareTo(Object obj):按照常量对象的顺序比较

注解

1、注解

它是代码级别的注释

2、标记符号:@

3、系统预定义的三个最基本的注解:

(1)@Override:表示某个方法是重写的方法

它只能用在方法上面,会让编译器对这个方法进行格式检查,是否满足重写的要求

(2)@SuppressWarnings(xx):抑制警告

(3)@Deprecated:表示xx已过时

4、和文档注释相关的注解

(1)文档注释

/**
文档注释
*/

(2)常见的文档注释

@author:作者

@since:从xx版本加入的

@see:另请参考

@param:形参

@return:返回值

@throws或@exception:异常

5、JUnit相关的几个注解

(1)@Test:表示它是一个单元测试方法

这个方法需要是:public void xxx(){}

(2)@Before:表示在每一个单元测试方法之前执行

这个方法需要是:public void xxx(){}

(3)@After:表示在每一个单元测试方法之后执行

这个方法需要是:public void xxx(){}

6、元注解

(1)@Target(xx):用它标记的注解能够用在xx位置

(xx):由ElementType枚举类型的10个常量对象指定,例如:TYPE,METHOD,FIELD等

例如:

@Target(ElementType.TYPE)

@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})

import static java.lang.annotation.ElementType.*;
@Target({TYPE,METHOD,FIELD})

(2)@Retention(xx):用它标记的注解可以滞留到xx阶段

(xx):由RetentionPolicy枚举类型的3个常量对象指定,分别是:SOURCE,CLASS,RUNTIME

唯有RUNTIME阶段的注解才能被反射读取到

例如:

@Retention(RetentionPolicy.RUNTIME)

(3)@Documentd:用它标记的注解可以读取到API中

(4)@Inherited:用它标记的注解可以被子类继承

7、自定义注解

@元注解
【修饰符】 @interface 注解名{
    
}
@元注解
【修饰符】 @interface 注解名{
    配置参数列表
}

配置参数的语法格式:

数据类型  配置参数名();

数据类型  配置参数名() default 默认值;

关于配置参数:

(1)配置参数的类型有要求:

八种基本数据类型、String、枚举、Class类型、注解、它们的数组。

(2)如果自定义注解声明了配置参数,那么在使用这个注解时必须为配置参数赋值,除非它有默认值

@自定义注解名(配置参数名1=值,配置参数名2=值……)

//如果配置参数类型是数组,那么赋值时,可以用{}表示数组
@自定义注解名(配置参数名1={值},配置参数名2=值……)

(3)如果配置参数只有一个,并且名称是value,那么赋值时可以省略value=

(4)如果读取这个注解时,要获取配置参数的值的话,可以当成方法一样来访问

自定义注解对象.配置参数();

猜你喜欢

转载自blog.csdn.net/Brevity6/article/details/91408954