zoukankan      html  css  js  c++  java
  • 黑马程序员Javaweb-自定义注解

    https://juejin.cn/post/6978553765154521096

    注解(元数据):与类,接口,枚举是在同一个层次,可声明在包,类,字段,方 法,局部变量,方法参数等的前面,用来对这些元素进行说明,注释。【1.5之后 新特性】

    使用注解:@注解名称

    作用分类:

    编写文档:通过代码里标识的注解(元数据)生成文档【生成doc(api)文档】

    Javadoc  类名.Java------->index.html

    代码分析:通过代码里标识的元数据对代码进行分析【使用反射】

    编译检查:让编译器能够实现基本的编译检查【Override

    JDK中定义的一些注解:

    @Override :检测被该注解标注的方法是否是继承自父类(接口)的

    @Deprecated:该注解标注的内容,表示已过时

    @SuppressWarnings:压制警告

    自定义注解

    格式:

    元注解

    public @interface注解名称{

    属性列表;//成员方法

    }

    本质:注解本质上就是一个接口, 该接口默认继承Annotation接口

    public interface MyAnno extends java.lang.annotation.Annotation {}

    javac MyAnno.java
    
    javap MyAnno.class
    Compiled from "MyAnno.java"
    public interface MyAnno extends java.lang.annotation.Annotation {
    }

    属性:接口中可以定义的成员方法 【抽象方法,public abstract可默认不写】

    要求:

    属性的返回值类型

    1.基本数据类型

    2.String

    3.枚举

    4.注解

    5.以上类型的数组

    比如写void  注解里面就不允许

    2.定义了属性,在使用时需要给属性赋值

    1. 如果定义属性时,使用default关键字给属性默认初始化值,则使用属性时,不用赋值
    2. 如果只有一个属性需要赋值,且属性名称为value,则value可以省略   如果不止一个 就要手动指定value了
    3. 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}省略
    public @interface Anno1 {
        String name() default "张三";
        Anno2 myanno();
        int[] age();
        public abstract Student sss1();
    }
    
    package edu.xupt.annotation;
    @Anno1(sss1 =Student.ss ,age = {15,22},name = "张三",myanno = @Anno2)
    public class Demon {
    }

    元注解:用于描述注解的注解

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

    @Target:描述注解能够作用的位置

    TYPE:可以作用于类上

    METHOD:可以作用于方法上

    FIELD:可以作用于成员变量上

    @Retention(RetentionPolicy.RUNTIME)

    @Retention:描述注解被保留的阶段【source,classruntime

          * @Retention(RetentionPolicy.RUNTIME):注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
          * @Retention(RetentionPolicy.CLASS):注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期
          * @Retention(RetentionPolicy.SOURCE):注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;

    @Documented:描述注解是否被抽取到api文档中

    @Interited:描述注解是否被子类继承

  • 相关阅读:
    weblogic详解
    Java中常见的5种WEB服务器介绍
    Eclipse 插件ibeetl
    Eclipse安装svn插件的几种方式
    在 Laravel 应用中使用 pjax 进行页面加速
    Pjax无刷新跳转页面实现,支持超链接与表单提交
    emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题
    PJAX全局无刷新的设置方法~
    pjax使用小结
    jQuery+pjax简单示例汇总
  • 原文地址:https://www.cnblogs.com/Galesaur-wcy/p/15164241.html
Copyright © 2011-2022 走看看