我爱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() {

    }
}

原文地址:https://www.cnblogs.com/hujunwei/p/12616890.html

时间: 2024-10-07 05:30:22

我爱java系列---【自定义注解】的相关文章

Java:自定义注解(Annotation)

在网上找了很多资料也有写的比较好的,但是总有有一点半点的细节没有写出来,在这里自己总结下使用. 使用Java的自定义注解,首先个人需要了解下Java为我们提供的元注解和相关定义注解的语法.(这个我在网上选择了一篇详细的介绍链接在文章最底层) 1.首先自定义我们需要的注解 package com.plat; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lan

Java中自定义注解

前言 随着springboot的流行,以前基于XML的spring配置用的越来越少,JavaConfig形式使用的越来越多,类似于: @Configuration public class AppConfig { @Bean(name="helloBean") public HelloWorld helloWorld() { return new HelloWorldImpl(); } } 可以看出更多的是基于注解(Annotation)实现的,包括springboot的入口类**Ap

JAVA笔记——自定义注解

如何自定义注解 Target Retention Inherited Documented 如何使用自定义注解 需求 实现 运行结果 如何自定义注解 这里是一个自定义的注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface AnnoDemo { public int value1(); public String value2(); publ

Java的自定义注解及通过反射获取注解

一.注解基本知识 1.元注解:@Retention @Target @Document @Inherited 2.Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口. 3.参数成员只能用public或默认(default)这两个访问权修饰 4.参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和Stri

Java如何自定义注解

本文主要是记录所学,以供后续参考.注解是Java 1.5引入的,Java自定义注解是通过运行时靠反射获取注解,注解相当于是一种嵌入在程序中的元数据,可以使用注解解析工具或编译器对其进行解析,也可以指定注解在编译期或运行期有效.在注解诞生之前,程序的元数据存在的形式仅限于java注释或javadoc,但注解可以提供更多功能,它不仅包含元数据,还能作用于运行期,注解解析器能够使用注解决定处理流程. 一.创建自定义注解 创建自定义注解与编写接口很相似,只是在接口关键字前面添加@符合. import j

java系列之注解

我们在实际项目开发中使用注解的目的:为了追求低耦合,降低后期的维护成本.平时自己在实际项目也会经常用到注解,所以想着自己总结一下注解的知识点,毕竟"好记性不如烂笔头",忘记的时候可以自己打开文章梳理一下,下面开始进入正文. 一.注解的本质: 从源码角度分析 [java.lang.annotation.Annotation」接口中有这么一句话,用来描述『注解』. The common interface extended by all annotation types. 翻译成中文:所有

我爱Java系列之---【SpringBoot中常用的注解和两种注入方式】

@EnableConfigurationProperties(DataSourceProperties.class) 来声明要使用DataSourceProperties 这个类并初始化该类对象,该类不用放在IOC容器中,可以通过该注解直接使用. [email protected]:一般写在类上边,通过该注解将当前类初始化到Spring的IOC容器中,其他类若想调用,直接用@Autowired去容器中拿. [email protected]: 一般写在类上边,标明该类是一个配置类,被注解的类内部

JAVA里自定义注解来进行数据验证

API开发中经常会遇到一些对请求数据进行验证的情况,这时候如果使用注解就有两个好处,一是验证逻辑和业务逻辑分离,代码清晰,二是验证逻辑可以轻松复用,只需要在要验证的地方加上注解就可以. Java提供了一些基本的验证注解,比如@NotNull.@Size,但是更多情况下需要自定义验证逻辑,这时候就可以自己实现一个验证注解,方法很简单,仅需要两个东西: 一个自定义的注解,并且指定验证器 一个验证器的实现 自定义验证注解 考虑有一个API,接收一个Student对象,并希望对象里的age域的值是奇数,

java之自定义注解入门

定义注解与定义接口类似,只是比接口多了个@符号,可以在注解中定义方法,简单例子如下: import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Description @Target(ElementType.TYPE) @Retent