注解篇

作者: 编程界的小学生 | 来源:发表于2017-04-06 13:07 被阅读34次

摘要:自定义注解、自定义注解的使用、自定义注解的处理

**
一、注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。
二、注解也会编译成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码农社区】,会定时推送各种干货:


qrcode_for_gh_577b64e73701_258.jpg

相关文章

  • Java中注解学习系列教程-3

    本文是《Java中注解学习系列教程》第三篇文章 在前两篇中我们学习了注解的定义、JDK内置注解、注解分类及自定义注...

  • Java中注解学习系列教程-2

    在上一篇文章中,我们讲解了:Java中注解的定义、JDK中内置注解、第三方注解。 本文是注解系列教程中的第二篇。来...

  • 注解篇

    摘要:自定义注解、自定义注解的使用、自定义注解的处理 **一、注解(也被称为元数据)为我们在代码中添加信息提供了一...

  • 注解篇

    @Configuration: Spring的配置标签 , 打了这个标签的类 ,可以被识别为 Spring的配置类...

  • 如何编写自定义注解

    上一篇java注解初探介绍了注解的基本概念, @Retention注解参数为CLASS时是编译时注解而RUNTIM...

  • 自定义注解与提取注解学习

    上一篇: java 注解学习上篇文章中学习了系统内置注解与元注解(@Retention, @Target, @In...

  • Import 注解与 ImportSelector 和 Impo

    @Import注解常出现在@Enable注解里面,上一篇@Enable 注解原理解析里知道@Enable只所以能发...

  • spring mvc 父子容器

    看本文之前首先需了解 spring注解驱动开发。可以看另外一篇文章spring注解,本文是在spring注解开发的...

  • 注解——体系篇

    一、前言 本文分析注解体系的主要目的有如下三点: 个人的知识体系的梳理,希望能把书由薄读厚,再由厚读薄; 下篇博文...

  • Spring注解

    简书日更 第4篇: 重新学习 Spring注解 相关知识 什么是基于Java的Spring注解配置? 给一些注解的...

网友评论

    本文标题:注解篇

    本文链接:https://www.haomeiwen.com/subject/bgtqattx.html