注解概述

定义

注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

注解的作用:

编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】

代码分析:通过代码里标识的元数据对代码进行分析【使用反射】

编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

一、为什么要学习注解呢?

在实际的项目中我们会使用大量的框架,很多框架就会使用大量的注解。学习注解能够使我们读懂别人的代码。我们也可以使用注解,自定义注解使我们的代码更清晰更整洁。

二、JDK注解。

1、@Override代表实现和覆盖父类的方法

2、@Deprecated代表这个方法已经过时

3、@SuppressWarnings()意思是忽略,这里是忽略这个deprecation过时的警告

package note.demo;
public interface People {public String name();public String age();//代表这个方法已经过时@Deprecatedpublic void song();}package note.demo;
public class ChilePeople implements People{//@Override代表实现和覆盖父类的方法@Overridepublic String name() {// TODO Auto-generated method stubreturn null;}@Overridepublic String age() {// TODO Auto-generated method stubreturn null;}//@SuppressWarnings()意思是忽略,这里是忽略这个deprecation过时的警告@SuppressWarnings("deprecation")@Overridepublic void song() {// TODO Auto-generated method stubPeople people = new ChilePeople();//化了横线代表此方法已经过时people.song();}
}

三、注解的分类。

1,按照运行机制划分

源码注解:注解只在源码中存在,编译成Class文件就不存在。

编译时注解:注解在源码和Class文件中都会存在注解信息。

运行时注解:在运行阶段还会起作用,甚至会影响运行逻辑的注解。比如很多第三方类库的自定义注解。

2、按照来源划分

JDK注解、第三方注解、自定义的注解

3、元注解

就是注解的注解

四、自定义注解

1、使用@interface关键字定义注解

2、成员的基本类型包括所有的基本类型和String,Class,Annotation,Enumeration

3、如果注解只有一个成员,成员名必须取名为value().

4、注解类可以没有成员,没有成员的注解类成为标识注解

5、@Target({ElementType.METHOD,ElementType.TYPE})表示注解的作用域(元注解)

6、@Retention(RetentionPolicy.RUNTIME) 注解的生命周期(元注解)

7、@Inherited 标识允许子注解来继承这个注解 (注意这里只能是继承不能是接口上使用,而且只能继承类上的注解,不能继承方法上的注解)(元注解)

8、@Documented 生成javadoc时会包含注解 (元注解)

package note.demo;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;//表示注解的作用域METHOD方法上,TYPE类或接口
@Target({ElementType.METHOD,ElementType.TYPE})
//生命周期,运行时
@Retention(RetentionPolicy.RUNTIME)
//表示子注解可以继承
@Inherited
//生成doc文档依然存在
@Documented
//使用@interface关键字定义注解
public @interface CustomNoto {/*** 成员的基本类型包括所有的基本类型和String,Class,Annotation,Enumeration* */String desc();  //这个表示注解的成员,不是方法。成员必须是无参数,无异常String author();int age() default 18;  //可以用default给成员制定一个默认的值
}

五、解析注解

通过反射来获取类,方法,接口,或成员上的运行时注解信息,从而实现动态控制程序运行时的逻辑。

反射是在运行时的,所以我们使用反射时解析,必须注解的生命周期是运行时。

package note.demo;
import java.lang.reflect.Method;
//解析注解
public class ParseNoto {public static void main(String[] args) {// TODO Auto-generated method stub//第一步拿到类类型try {Class class1 = Class.forName("note.demo.ChilePeople");//判断这个类型是否存在这个注解boolean is = class1.isAnnotationPresent(CustomNoto.class);if (is == true) {CustomNoto noto = (CustomNoto) class1.getAnnotation(CustomNoto.class);System.out.println(noto.desc());}//解析方法上的注解Method[] methods = class1.getMethods();for (Method method : methods) {boolean isx = method.isAnnotationPresent(CustomNoto.class);if (isx) {CustomNoto cNoto = (CustomNoto)method.getAnnotation(CustomNoto.class);System.out.println(cNoto.age()+"");}}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

希望以上对大家的理解有所帮助!

我的官方群点击此处。加入群聊【java学习交流群】,一起学习,相互讨论。

群内已经有管理将知识体系整理好(源码,学习视频等资料),欢迎加群免费领取。

夏目:JAVA高薪就业(视频,学习路线资料,免费领取)​zhuanlan.zhihu.com

https://qm.qq.com/cgi-bin/qm/qr?k=DLUJwoP0UHOcUt26oxRj6zijQoAVTQsd&authKey=GaHkR5ox8VWGeRaMhqjWWxmkXV8GKAdG+rwLdAkBWcMefPA0S7/o34hY0m4KNWHF&noverify=0 (二维码自动识别)

对于正在学习java的小伙伴们,相信这些对你们还是有帮助的,希望在学java的路上少走弯路,多

吸取一些前辈的经验,欢迎攻城狮,程序猿们加入学习交流群1022322005,不管你是领取资料也

好,还是交流心得,询问问题,吸取经验,欢迎前来交流。

@param注解什么意思_你对Java注解真的理解吗?相关推荐

  1. java注解 源码_详解Java注解教程及自定义注解

    详解Java注解教程及自定义注解 更新时间:2016-02-26 11:47:06   作者:佚名   我要评论(0) Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个 ...

  2. java的注解方式_详解Java注解的实现与使用方法

    详解Java注解的实现与使用方法 Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性.在如今各种框架及开发中非常常见,特此说明一下. 如何创建一个注解 每一个自定义的注解都由四 ...

  3. java中注解的解析_全面解析Java中的注解与注释

    注解一.什么是 Annotation? (注解 or 注释)Annotation, 准确的翻译应该是 -- 注解. 和注释的作用完全不一样. Annotation 是JDK5.0及以后版本引入的一个特 ...

  4. serve注解是加在哪个类_不会 Java 注解 ? 看这一篇文章!

    对于Java注解,我之前的印象是很模糊的,总觉得这个东西经常听说,也经常用,但是具体是怎么回事,好像没有仔细学习过,说到注解,立马想到@Controller,仅此而已. 对于Java注解,我咨询过一些 ...

  5. java 注解 框架_深入浅析Java注解框架

    我们经常会在java代码里面看到:"@Override","@Target"等等样子的东西,这些是什么? 在java里面它们是"注解". 下 ...

  6. 女生学java的坏处_女生学java是否真的没有优势

    随着女性越来越独立,我们可以看到再以前我们认为不适合女性朋友从事的工作,也出现了越来越多的女生,例如对IT行业也不再跟之前一样畏惧.虽然当下很多人所持的观点依旧是,女生不适合IT行业,但是很多女生已经 ...

  7. Java继承个人的理解_我对java继承的理解

    关于java继承和多态的文章已经很多了,如果你对java的继承和多态已经有很好的理解,请绕过本变文章, 如果你对java的继承和多态不是很理解,还在找寻这方面的东西,那这篇文章可能对你有所帮助. 首先 ...

  8. 存储端显示主机链路降级_【计算机网络】你真的理解数据链路层吗?

    学过计算机网络的朋友们应该都知道OSI七层模型,今天要聊的数据链路层是属于七层模型中的第二层.所以应该算是计算机网络体系中的底层了. 数据链路层使用的信道主要有两种类型: 点对点信道:也就是字面意思, ...

  9. 【Java 注解】自定义注解 ( 注解解析 )

    文章目录 一.定义注解 二.使用注解 三.解析注解 四.通过注解对象获取注解属性的原理 在 [Java 注解]自定义注解 ( 注解属性定义与赋值 ) 博客中讲解了 注解属性 ; 在 [Java 注解] ...

  10. Java注解配置rest服务_Spring Boot 注解—常用注解

    注:该部分内容包含一些常用注解,如果没有学习过java注解的同学可以先看一下上一小节的内容Spring Boot 注解-基本知识 ,不看也没关系,下面就开始本节内容. @Configuration注解 ...

最新文章

  1. soapui工具_基于开源的API测试工具!不再为web服务负载测试而发愁
  2. 写得太好了!树莓派安装docker
  3. 自定义MIME类型支持FLV的相关设置
  4. GCC strict aliasing – 嫉妒就是承认自己不如别人
  5. Unity-2017.2官方实例教程Roll-a-ball(一)
  6. 空投坐标怎么看6_嗦粉不咯?桂林米粉店将分三四五星级,你怎么看? 旅行 6 月 4 日热点速递...
  7. STM32 ADC模数转换
  8. mapbox 导航_寻宝风格导航地图 Treasure 诞生记 | Mapbox 地图设计思路
  9. python以读写方式打开文件_python 文件读写with open模式r,r+,w,w+,a,a+的区别
  10. python小_Python 小入坑
  11. 数字信号处理matlab版答案,数字信号处理(MATLAB版)
  12. 软件质量保证与测试(秦航第二版)第二章
  13. 蓝桥杯质数的后代码c语言,质因数
  14. 卸载office2010后 再安装2013 错误1706 安装程序找不到需要的文件
  15. 2018 年计算机语言排行榜,TIOBE:2018年11月编程语言排行榜
  16. 2020 ACL《CoGAN》- Aspect Sentiment Classification with Document-level Sentiment Preference Modeling
  17. android 根目录 文件 打包,Android image文件的打包和解包
  18. python运行时间表_Python基本操作的时间代价
  19. Java代码---双色球机选中奖概率
  20. 中信国安:奇虎360私有化交割完成

热门文章

  1. ECMAScript 5 —— 基本包装类型之String(下)
  2. git分支创建分支删除分支合并
  3. [Android Pro] 关于BitmapFactory.decodeStream(is)方法无法正常解码为Bitmap对象的解决方法...
  4. 微信小程序获取Token 存储2小时
  5. HashMap与LinkedHashMap的结构对比
  6. 一个时代的落幕!继苹果、火狐、Linux Lite之后,微软也放弃Flash
  7. Python使用matplotlib可视化模拟正弦余弦折线图
  8. 面向对象的三个基本特征_杂谈:JavaScript面向对象
  9. 10月15号和16号PC端云音乐项目总结
  10. Abp框架 Abp中使用Redis