Java自定义注解
简介
Java自定义注解是通过运行时靠反射获取注解。
常用于:登陆、权限拦截、日志处理,例如我们要获取某个方法的调用日志,可以通过AOP(动态代理机制)给方法添加切面,通过反射来获取方法包含的注解,如果包含日志注解,就进行日志记录。
注解相当于是一种嵌入在程序中的元数据,可以使用注解解析工具或编译器对其进行解析,也可以指定注解在编译期或运行期有效。
创建自定义注解
创建自定义注解与编写接口很相似,除了它的接口关键字前有个@符号,我们可以在注解中定义方法
package com.tao.annotations;
import java.lang.annotation.*;
@Documented
@Target(ElementType.METHOD)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodInfo{
String author() default "Pankaj";
String date();
int revision() default 1;
String comments();
}
- 注解方法,没有参数
- 可设定默认值
- 返回类型仅限于原始类型:字符串、枚举、注解,或以上构成的数组
- 可包含四种【元注解】与之绑定
- Documented – 表示使用该注解的元素应被javadoc或类似工具文档化
- **Target --**表示支持注解的元素种类:可选【TYPE, METHOD, CONSTRUCTOR, FIELD】,不写则全部支持
- **Inherited --**注解类型会被自动继承
- **Retention --**接收RetentionPolicy参数,可选【SOURCE, CLASS, RUNTIME】,表示注解类型保留时间的长短
Java内置注解
Java提供3种内置注解 : @Override、@Deprecated、@SuppressWarnings
-
@Override : 表示正在覆盖SuperType的方法,该方法来自父类或接口
-
@Deprecated :表示该方法已被弃用,应在javadoc中提供信息,说明弃用原因以及替代方法
-
@SuppressWarnings:这个注解仅仅是告知编译器,忽略它们产生的特殊警告
示例如下:
package com.tao.annotations; import java.io.FileNotFoundException; import java.util.*; public class AnnotationExample { public static void main(String[] args) { } @Override @MethodInfo(author = "Pankaj", comments = "Main method"