JAVA 注解详解及简单实例

何为注解

注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是:

生成文档  这是注解的原始用途,可以通过注解生成JavaDoc文档

跟踪代码的依赖性  可以通过注解替代配置文件,简化项目的配置。现有的许多框架都采用这个功能减少自己的配置。

编译检查  在编译时进行格式检查,例如@Override

基础注解

Java目前内置了三种标准注解,以及四种元注解。四种元注解负责创建其他的注解。

三种标准注解

@Override,表示当前的方法覆盖超类中的方法

@Deprecated,如果程序员使用被这个注解注释的元素,则编译器会进行提示

@Suppress Warnings,忽略编译器的警告

四种元注解

@Target,表示注解的适用范围,例如@Target(ElementType.FIELD).

ElementType的枚举值有

CONSTRUCTOR,用于构造方法

FIELD,用于字段声明,包括常量

LOCAL_VARIABLE,用于局部变量

METHOD,用于方法

PACKAGE,用于包声明

PARAMETER,用于参数声明

TYPE,用于类,接口

@Retention,表示注解的保留级别,例如@Retention(RetentionPolicy.RUNTIME).

RetentionPolicy的枚举值有

Source,注解将被编译器丢弃

Class,注解可以在class文件中使用,但是会被VM丢弃

Runtime,在VM的运行期间也会保留

@Document,将次注解在javaDoc文件中可见

@Inherited,允许子类继承父类中的注解

自定义注解

创建注解

package com.rainman.annotation;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface MethodLog {

String method() default "do something";

String opeator() default "someone";

}

@interface标明该类型是一个注解的定义

对于“String method() default "dong something";”来说String是注解参数的数据类型,method是参数名,default用来设置默认值

注解的使用

package com.rainman.controller;

import com.rainman.annotation.MethodLog;

public class CelebrateController {

@MethodLog(method="celebrate birthday",operator="we")

public void celebrateBirthday(){

}

@MethodLog(operator = "we")

public void celebrateNewYears(){

}

@MethodLog(method="celebrate harvest")

public void celebrateHarvest(){

}

@MethodLog

public void yeah(){

}

}

注解使用的格式为"@Annotation(para=xxxx,...)",Annotation是注解名,para是注解中设置的参数名,参数如果不设置值,则会使用默认值

设置注解解析器

package com.rainman.annotation;

import com.rainman.controller.CelebrateController;

import java.lang.reflect.Method;

public class MethodLogParse {

public static void parse(Class classType) throws Exception{

Method[] array = classType.getMethods();

for(Method method : array){

System.out.println("=================="+method.getName()+"=================");

if(method.isAnnotationPresent(MethodLog.class)){

MethodLog methodLog = method.getDeclaredAnnotation(MethodLog.class);

String str = String.valueOf(methodLog.operator());

String str1 = String.valueOf(methodLog.method());

System.out.println(str + " " + str1);

}

}

}

public static void main(String[] args){

try {

MethodLogParse.parse(CelebrateController.class);

}catch(Exception e){

e.printStackTrace();

}

}

}

输出结果为

==================celebrateBirthday=================

we celebrate birthday

==================yeah=================

someone do something

==================celebrateNewYears=================

we do something

==================celebrateHarvest=================

someone celebrate harvest

==================wait=================

==================wait=================

==================wait=================

==================equals=================

==================toString=================

==================hashCode=================

==================getClass=================

==================notify=================

==================notifyAll=================

通过反射机制,遍历方法,然后获取方法的注解。注解可以注解类,方法,字段等等,所以也可以通过类似的方式获取这些对象的注解,然后进行处理。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java method 注解_JAVA 注解详解及简单实例相关推荐

  1. java对文件的操作详解_Java 对 Properties 文件的操作详解及简单实例

    Java 对 Properties 文件的操作详解及简单实例 发布于 2020-8-7| 复制链接 摘记: Java 对 Properties 文件的操作简介在 Java 中,我们常用 java.ut ...

  2. java file 实例_Java File类的详解及简单实例

    Java File类的详解及简单实例 1. File():构造函数,一般是依据文件所在的指定位置来创建文件对象. CanWrite():返回文件是否可写. CanRead():返回文件是否可读. Co ...

  3. php小程序地图处理,微信小程序 地图map详解及简单实例

    微信小程序 地图map 微信小程序map 地图属性名类型默认值说明longitudeNumber中心经度 latitudeNumber中心纬度 scaleNumber1缩放级别 markersArra ...

  4. mysql 实例复制_MYSQL教程MySQL 复制详解及简单实例

    <MysqL教程MysqL 复制详解及简单实例>要点: 本文介绍了MysqL教程MysqL 复制详解及简单实例,希望对您有用.如果有疑问,可以联系我们. MysqL 复制详解及简单实例 主 ...

  5. python与golang_Golang与python线程详解及简单实例

    Golang与python线程详解及简单实例 在GO中,开启15个线程,每个线程把全局变量遍历增加100000次,因此预测结果是 15*100000=1500000. var sum int var ...

  6. mysql 实例复制_MySQL 复制详解及简单实例

    MySQL 复制详解及简单实例 主从复制技术在MySQL中被广泛使用,主要用于同步一台服务器上的数据至多台从服务器,可以用于实现负载均衡,高可用和故障切换,以及提供备份等等.MySQL支持多种不同的复 ...

  7. java method 注释_Java注解

    Java注解 注解概述 3.注解 3.1.注解,或者叫做注释类型,英文单词是:Annotation 疑问:注解到底是干啥的????????? 3.2.注解Annotation是一种引用数据类型.编译之 ...

  8. 泛型java 代码讲解_Java泛型详解

    2516326-5475e88a458a09e4.png 一,打破砂锅问到底 泛型存在的意义? 泛型类,泛型接口,泛型方法如何定义? 如何限定类型变量? 泛型中使用的约束和局限性有哪些? 泛型类型的继 ...

  9. java 枚举使用例子_Java枚举详解及使用实例(涵盖了所有典型用法)

    在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数 ...

最新文章

  1. pythondes加密盒子_PYTHON实现DES加密及base64源码
  2. 当前超级计算机的应用方兴未艾,四川省若尔盖县高三下学期语文模拟卷(五)
  3. 【计算机组成原理】微处理器、微型计算机、微型计算机系统
  4. 小熊的人生回忆(九)
  5. Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署
  6. 编译原理论文_我的第一篇论文
  7. python快速开发框架_GitHub - lee2029/pyui4win: 一个用python实现业务逻辑、用xml和html/css/js描述界面的windows程序的快速开发框架...
  8. linux硬盘对拷 再生龙,使用Clonezilla(再生龙)克隆Linux系统
  9. 数据、变量、内存三者之间的关系
  10. org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest
  11. 乐固、360加固在android 11 上报错,无法安装
  12. 不靠广告联盟也能月赚万元
  13. I.MX6ULL之LCD显示
  14. LOL自动走A和释放技能原理及安全防护
  15. “标签化”思想在分布式系统中的应用
  16. kafka完整集群安装
  17. Parametric Contrastive Learning:长尾问题中的对比学习
  18. 颈椎间盘突出的治疗方法
  19. 语音播报库AVFoundation
  20. UGUI-- Text文本控件

热门文章

  1. 华为云用什么吸引 150 万开发者?
  2. 人人都可做 AI 开发者,云知声 AI 开放平台重磅上线
  3. 为效能而生,企业级敏捷研发管理工具PingCode正式发布!
  4. 达摩院自研数学规划求解器发布,最新技术将通过阿里云对外输出
  5. 微信、支付宝否认提供「锁定 35 万人」数据;苹果押宝中国 5G 市场;TiDB 4.0.1 发布 | 极客头条...
  6. “恭喜那些拿到 Java 月薪 2 万 Offer 的人”
  7. 优酷基于 Pipeline 的播放器开放式架构设计与实践
  8. 最通俗易懂的 Java 10 新特性讲解 | 原力计划
  9. 众说纷“云”,看生态驱动工业物联网落地
  10. 即使到了 2020 年,编程语言之争仍未休!