注解

it2025-01-31  13

package cn.JAVandReflection.AnnotationTest; import java.lang.annotation.*; /** * 介绍什么是注解,以及自定义注解: * Annotation: * 作用:方便阅读程序、 对程序的检查和约束、 可以被其他程序读取(如用反射操作注解,ORM内部的一些原理等下一期讲解)作用对象: * 注解可以作用在包、类、方法、属性等上面 * 常见注解: * @Override * @Deprecated <:不赞成、反对> 不推荐使用某个方法等时使用 * @FunctionalInterface 函数式接口使用 * 本质: 接口 * 理解概念: * 元注解: 用于描述注解的注解 单词: meta-annotation * 常见的元注解: * @Target : 用于描述注解的作用范围,即被描述的注解可以作用在什么地方,是类、方法亦或是变量 * @Retention: <:保留>表示什么级别保存该注解信息,用于描述注解的生命周期 三个周期: SOURCE < CLASS < RUNTIME * 注意: 自定义的一般都是 RUNTIME * @Document: 说明该注解是否被博阿寒在javadoc中 * @Inherited: <:继承的>表明子类可以继承父类的注解 * 自定义注解: 用下面代码简单理解 */ // 下面自定义一个注解 @Target(value = {ElementType.FIELD, ElementType.TYPE}) /** * ElementType 这个枚举类型里面限制了我们要使用的字段:但是常用的有以下几个 * .TYPE 表示作用域是类 * .FIELD 表示作用域是变量 * .METHOD 表示作用域是方法 * 可以同时设置作用多个作用域 */ @Retention(value = RetentionPolicy.RUNTIME) /* RetentionPlicy 同样枚举类型 至于三个 SOURCE CLASS RUNTIME */ @Documented // 表示转成文档时候保留 @Inherited // 表示子类可以继承该注解 @interface myAnnocation { // 这个名就是注解名 // 里面写注解描述参数即可,他们是参数,但是样子像方法 String name(); String id(); int age() default 18; // 可以这样的形式设置一个默认值 // 以下这个仅演示可行性 char[] a() default {'d', 'b'}; } // 通过上面方式简单定义了一个注解 注解的基本使用如下 /* 注意点: 定义过的注解参数而且没有设置默认值的必须像@Retention(value = RetentionPolicy.RUNTIME) 写上,但是 @Retention(RetentionPolicy.RUNTIME) 你们可能看见遮掩的形式: 因为, 在注解参数只有一个,且其名字为value时候,可以省略写,下面是上面的省略写法 */ // 简单使用 这样就可以注解啦 ,当然 我们的作用域还有变量,我们也可以在变量上使用 @myAnnocation(name="WhatAnnotation Class", id="001") public class WhatAnnotation { // 这样是可行 @myAnnocation(name="name field", id="001-1") String name ; public WhatAnnotation() { } }
最新回复(0)