zoukankan      html  css  js  c++  java
  • 我爱java系列---【自定义注解】

    一、注解概述

    1.定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、
      接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素
      进行说明,注释。
    2.作用分类:
      编写文档:通过代码里标识的注解生成文档【例如,生成文档doc文档】
      代码分析:通过代码里标识的注解对代码进行分析【例如,注解的反射】
      编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【例如,Override】
    3.常见注解
      1. @author:用来标识作者名
      2. @version:用于标识对象的版本号,适用范围:文件、类、方法。
      3. @Override :用来修饰方法声明,告诉编译器该方法是重写父类中的方法,如果父类不存在该方法,则编译失败。
    4.自定义注解
    /*
        自定义注解
            1.格式
                public @interface 注解名称 {
                    属性集
                }
            2.分类
                (1)空注解: 没有属性集
     */
    public @interface MyAnno01 {
    }
    /*
        自定义注解
            1.格式
                public @interface 注解名称 {
                    属性集
                }
            2.分类
                (2)有属性集的注解
                    属性的定义格式:
                    数据类型 属性名称();    //没有默认值
                    数据类型 属性名称() default 默认值;    //有默认值,default后面的内容
                (3)属性的类型都有哪些?
                    8种基本类型,String,枚举(不用),Class类型,注解类型
                    以及以上任意类型的一维数组   int[]
     */
    public @interface MyAnno02 {
        String name();
        int age() default 18;
        String[] hobbies();//爱好
        MyAnno01 anno();//注解类型
    }
    /*
        3.自定义注解使用的注意事项
            1.空注解可以直接使用
            2.一个注解只能在一个位置上使用一次,一个位置上可以使用多个不同的注解
            3.如果注解有属性 ,那么必须给属性赋值才能使用  键值对的方式赋值 属性名=属性值 多个属性,隔开
              如果属性是数组类型 并且只有一个属性值 那么{}可以省略 如果多个属性值 {}不能省略
            4.如果属性没有默认值 必须赋值 如果有默认值 可以不赋值
            5.如果一个注解中 只有一个属性 并且这个属性叫value 那么赋值时可以省略属性名      尤其要注意的--------------
     */
    public class Demo07AnnotationNotice {
        @MyAnno01
        //@MyAnno01 //同一个位置,只能使用一次
        @MyAnno02(name = "少年攻城狮",hobbies = "学习java",anno = @MyAnno01)
        @MyAnno03("少年")
        @MyAnno04
        public void method() {
    
        }
    }
    /*
        5.如果一个注解中 只有一个属性 并且这个属性叫value 那么赋值时可以省略属性名      尤其要注意的--------------
     */
    public @interface MyAnno03 {
        String value();//没有默认值
    }
    public @interface MyAnno04 {
        String value() default "少年攻城狮";//有默认值
    }

    自定义注解实例:

    /*
        定义一个注解:Book
            - 包含属性:String value()   书名
            - 包含属性:double price()  价格,默认值为 100
            - 包含属性:String[] authors() 多位作者
     */
    public @interface Book {
        String value();
        double price() default 100;
        String[] authors();
    }

    自定义注解的使用示范:

    /*
        自定义Book注解并使用案例
    
            定义一个注解:Book
            - 包含属性:String value()   书名
            - 包含属性:double price()  价格,默认值为 100
            - 包含属性:String[] authors() 多位作者
     */
    @Book(value="我爱java系列",price = 1000,authors = {"少年","少女"})
    public class Demo08AnnotationBook {
        @Book(value = "少年启示录",authors = "伟哥")
        public void method() {
    
        }
    }
    愿你走出半生,归来仍是少年!
  • 相关阅读:
    Eclipse插件大全 (下)
    Eclipse插件大全 (上)
    Struts2学习笔记
    DisplayTag应用指南
    JFreeChart 2
    JFreeChart 1
    一对一直播app源码开发,多媒体消息发送优化方案
    仿比心视频聊天源码开发,网络节点数量和时延的关系
    一对一直播源码开发,保证实时性要从降低延迟下手
    小视频app源码凭什么成功出圈,守“江山”有多难?
  • 原文地址:https://www.cnblogs.com/hujunwei/p/12616890.html
Copyright © 2011-2022 走看看