摘要:自定义注解、自定义注解的使用、自定义注解的处理
**
一、注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。
二、注解也会编译成class
**
1、自定义注解:
/**
* 1.表示该注解可以用在什么地方
* 2.CONSTRUCTOR:构造器
* FIELD:全局变量包括enum实例
* LOCAL_VARIABLE:局部变量
* METHOD:方法
* PACKAGE:包
* PARAMETER:参数
* TYPE:类、接口(包括注解类型)或者enum
*/
@Target(ElementType.METHOD)
/*
* 1.表示需要在什么级别保存该注解信息
* 2.SOURCE:注解将被编译器丢弃
* CLASS:在class文件可用,但会被VM丢弃
* RUNTIME:VM将在运行期也保留注解,因此可以通过反射机制读取注解的信息
*/
@Retention(RetentionPolicy.RUNTIME)
@Documented:将此注解包含在Javadoc中
//Inherited:允许子类继承父类中的注解
public @interface CategoryLog {
//首菜单
String firstMenu();
//二级菜单
String secondMenu();
}
--------------------------------------------------------------------------------------
package annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author 15620646321@163.com
* @date 2017年4月6日
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DescLog {
String value() default "";
}
2、自定义注解的使用
package controller;
import annotation.CategoryLog;
import annotation.DescLog;
/**
* @author 15620646321@163.com
* @date 2017年4月6日
*/
@CategoryLog(firstMenu = "基本信息", secondMenu = "用户")
public class DemoController {
@DescLog("HelloWorld登陆了")
public void test() {
System.out.println("HelloWorld!");
}
}
3、获取注解信息
package test;
import java.lang.reflect.Method;
import annotation.CategoryLog;
import annotation.DescLog;
import controller.DemoController;
/**
* @author 15620646321@163.com
* @date 2017年4月6日
*/
public class TestAnnotation {
public static void main(String[] args) {
Class<?> clazz = DemoController.class;
CategoryLog annotation = clazz.getAnnotation(CategoryLog.class);
System.out.println(annotation.firstMenu());
System.out.println(annotation.secondMenu());
try {
Method method = clazz.getMethod("test");
System.out.println(method.getAnnotation(DescLog.class).value());
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}
}
4、输出结果
基本信息
用户
HelloWorld登陆了
若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:

网友评论