跟王老师学注解:自定义注解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学注解:自定义注解相关的知识,希望对你有一定的参考价值。

跟王老师学注解(四):自定义注解

主讲教师:王少华   QQ群号:483773664

到此,我们已经学习完了JDK提供的3种内建注解及4种元注解,下面来了解自定义注解

一、注解类型

(一)注解类型与接口:注解类型是一种接口,但它又不同于接口

1、注解类型使用关键字@interface而不是interface

1
2
public @interface TestAno {
}

@interface隐含继承java.lang.annotation.Annotation接口

2、注解类型的方法定义是独特的、受限制的

1
String name() default "Jack";

方法必须声明为无参数,无异常抛出

方法名就是成员变量名,方法的返回值就是成员变量的类型

方法的后面可以使用default关键字,后面跟一个默认值

(二)、注解类型与接口的相似之处

都可以定义常量、静态成员的类型。注解类型也可以像接口一样被现实或被继承

二、自定义注解类型

(一)、定义

1
2
3
4
5
6
7
8

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


@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationTest{
    //定义两个成员变量name和age
    //用default关键字为两个成员变量赋初始值
    String name() default "Jack";
    int age() default 20;
}

(二)、使用

1、使用定义了成员变量的注解时,要为成员变量赋值

1
2
3
4
5
6
public class TestAnnotation {
    @AnnotationTest(name="wangsh",age=21)
    public void info(){
         
    }
}

2、如果注解类型的成员变量被指定了初始值,则在使用该注解时不对成员变量赋值也可以

1
2
3
4
5
6
public class TestAnnotation {
    @AnnotationTest
    public void info(){
         
    }
}

3、如果注解类型在定义时没有指定默认值,而在使用时又没有指定值,则会在编译时报错

4、如果注解类型在定义时指定了默认值,而在使用时又指定了值,则默认值会指定值代替。

三、问题来了

我们自定义的注解,在开发过程中有什么用呢???!!!这是我们下一节要讲解的内容








以上是关于跟王老师学注解:自定义注解的主要内容,如果未能解决你的问题,请参考以下文章

跟王老师学注解:元注解

跟王老师学注解:利用反射读取注解信息

跟王老师学注解:注解应用案例

跟王老师学注解:注解概述

从零开始学springboot-6.手写拦截器和自定义注解

[java]在mars老师的视频里,如何按照老师那样,形成并使用自定义的函数注解,如图