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

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

主讲教师:王少华   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、如果注解类型在定义时指定了默认值,而在使用时又指定了值,则默认值会指定值代替。

三、问题来了

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

来自为知笔记(Wiz)

时间: 2024-11-08 22:33:04

跟王老师学注解(四):自定义注解的相关文章

跟王老师学注解(二)注解的分类及内建注解

跟王老师学注解(二):注解的分类及内建注解 主讲教师:王少华   QQ群号:483773664 一.注解的分类 在Java中,根据注解的使用方法和用途,可将注解分成3类,分别是 内建注解(也称为基本注解),定义于java.lang包下 元注解(Meta Annotation) 自定义注解 二.内建注解 (一)分类 在JDK5.0及以上的版本的java.lang包下提供了3种标准的注解类型,分别是 @Override: @Deprecated @SuppressWarnings (二)@Overr

跟王老师学注解(三):元注解

跟王老师学注解(三):元注解 主讲教师:王少华   QQ群号:483773664 元注解,是用来修饰其他的注解定义.java.lang.annotation包下提供了4个元注解,分别是@Target注解.@Retention注解.@Documented注解以及@Inherited注解. 一.@Target (一)简介 用于指定被修饰的注解能用于修饰哪些程序元素 @Target注解类型有唯一的value作为成员变量,value的类型为java.lang.annotation.ElementType

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

跟王老师学注解(五):读取注解信息 主讲教师:王少华   QQ群号:483773664 一.注解被读取 (一)条件 当一个注解类型被定义为运行时注解后,该注解才是运行时可以见,当class文件被装载时被保存在class文件中的注解才会被Java虚拟机所读取. 要把@Retention注解的value成员变量的值设为RetentionPolicy.RUNTIME (二)办法 我们已知所有的注解都是继承的java.lang.Annotation接口,也就是说Annotation是所有接口的父接口.除

跟王老师学注解(一):注解概述

跟王老师学注解(一):注解概述 主讲教师:王少华   QQ群号:483773664 一.问题来了 真实的悲惨的例子 1 2 3 4 5 public class SupClass {     public void getObjectInfo(){         System.out.println("我是父类");     } } 1 2 3 4 5 public class ChildClass extends SupClass{     public void getObjec

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

跟王老师学注解(六):注解应用案例 主讲教师:王少华   QQ群号:483773664 一.需求 利用注解,做一个Bean的数据校验 要求: 用户名是否能为空,用户名的长度不能超过指定长度,不能少于指定长度 二.参考代码 @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.FIELD, ElementType.PARAMETER }) public @interface MyValidate {     // 是否可以为空     

跟王老师学反射(四):Class类:从Class类中获取信息

跟王老师学反射(四)Class类:从Class类中获取信息 主讲教师:王少华   QQ群号:483773664 学习内容 获得class类中的信息 根据我们以前学过的一个Java类有以下几部组成,如下代码所示 一.访问Class对应的类所包含的构造方法 (一)public Constructor<T> getConstructor(Class<?>... parameterTypes) 返回此Class对象所表示的类的指定public构造方法. parameterTypes参数是按

跟王老师学枚举(四):枚举类练习

跟王老师学枚举(四):枚举的练习 主讲教师:王少华   QQ群号:483773664 一.需求 请编写一个关于星期几的枚举WeekDay 要求: 枚举值:Mon,Tue,Wed,Thu,Fri,Sat,Sun 该枚举要有一个方法,调用该方法返回中文格式的星期(星期一...) 二.参考代码 package chapter11_04;   public enum WeekDay {     Mon{         @Override         public String getChinaWe

跟王老师学异常(四):try-catch-finally

try-catch-finally 主讲人:王少华  QQ群号:483773664 学习目标 1.掌握try-catch-finally 2.掌握try-catch-finally分别跟System.exit(1)和return一起使用注意事项 一.finally执行流程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public class Test2 {     public static void mai

跟王老师学MySQL:MySQL数据类型之小数类型

跟王老师学MySQL:MySQL数据类型之小数类型 主讲教师:王少华   QQ群号:483773664 学习内容 小数类型有哪些以及它们的取值范围 定义语法中的M和D的含义 定点型和浮点型的区别 一.简介 MySQL中使用浮点数类型和定点数类型来表示小数. 浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型). 定点数类型就是DECIMAL型. 二.字节数.取值范围 三.定义语法 1 类据类型 (M,D) M:精度,数据的总长度 D:标度,小数点后的长度 注: 小数点不占长