@param注解什么意思_你对Java注解真的理解吗?
注解概述
定义:
注解(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注解真的理解吗?相关推荐
- java注解 源码_详解Java注解教程及自定义注解
详解Java注解教程及自定义注解 更新时间:2016-02-26 11:47:06 作者:佚名 我要评论(0) Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个 ...
- java的注解方式_详解Java注解的实现与使用方法
详解Java注解的实现与使用方法 Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性.在如今各种框架及开发中非常常见,特此说明一下. 如何创建一个注解 每一个自定义的注解都由四 ...
- java中注解的解析_全面解析Java中的注解与注释
注解一.什么是 Annotation? (注解 or 注释)Annotation, 准确的翻译应该是 -- 注解. 和注释的作用完全不一样. Annotation 是JDK5.0及以后版本引入的一个特 ...
- serve注解是加在哪个类_不会 Java 注解 ? 看这一篇文章!
对于Java注解,我之前的印象是很模糊的,总觉得这个东西经常听说,也经常用,但是具体是怎么回事,好像没有仔细学习过,说到注解,立马想到@Controller,仅此而已. 对于Java注解,我咨询过一些 ...
- java 注解 框架_深入浅析Java注解框架
我们经常会在java代码里面看到:"@Override","@Target"等等样子的东西,这些是什么? 在java里面它们是"注解". 下 ...
- 女生学java的坏处_女生学java是否真的没有优势
随着女性越来越独立,我们可以看到再以前我们认为不适合女性朋友从事的工作,也出现了越来越多的女生,例如对IT行业也不再跟之前一样畏惧.虽然当下很多人所持的观点依旧是,女生不适合IT行业,但是很多女生已经 ...
- Java继承个人的理解_我对java继承的理解
关于java继承和多态的文章已经很多了,如果你对java的继承和多态已经有很好的理解,请绕过本变文章, 如果你对java的继承和多态不是很理解,还在找寻这方面的东西,那这篇文章可能对你有所帮助. 首先 ...
- 存储端显示主机链路降级_【计算机网络】你真的理解数据链路层吗?
学过计算机网络的朋友们应该都知道OSI七层模型,今天要聊的数据链路层是属于七层模型中的第二层.所以应该算是计算机网络体系中的底层了. 数据链路层使用的信道主要有两种类型: 点对点信道:也就是字面意思, ...
- 【Java 注解】自定义注解 ( 注解解析 )
文章目录 一.定义注解 二.使用注解 三.解析注解 四.通过注解对象获取注解属性的原理 在 [Java 注解]自定义注解 ( 注解属性定义与赋值 ) 博客中讲解了 注解属性 ; 在 [Java 注解] ...
- Java注解配置rest服务_Spring Boot 注解—常用注解
注:该部分内容包含一些常用注解,如果没有学习过java注解的同学可以先看一下上一小节的内容Spring Boot 注解-基本知识 ,不看也没关系,下面就开始本节内容. @Configuration注解 ...
最新文章
- soapui工具_基于开源的API测试工具!不再为web服务负载测试而发愁
- 写得太好了!树莓派安装docker
- 自定义MIME类型支持FLV的相关设置
- GCC strict aliasing – 嫉妒就是承认自己不如别人
- Unity-2017.2官方实例教程Roll-a-ball(一)
- 空投坐标怎么看6_嗦粉不咯?桂林米粉店将分三四五星级,你怎么看? 旅行 6 月 4 日热点速递...
- STM32 ADC模数转换
- mapbox 导航_寻宝风格导航地图 Treasure 诞生记 | Mapbox 地图设计思路
- python以读写方式打开文件_python 文件读写with open模式r,r+,w,w+,a,a+的区别
- python小_Python 小入坑
- 数字信号处理matlab版答案,数字信号处理(MATLAB版)
- 软件质量保证与测试(秦航第二版)第二章
- 蓝桥杯质数的后代码c语言,质因数
- 卸载office2010后 再安装2013 错误1706 安装程序找不到需要的文件
- 2018 年计算机语言排行榜,TIOBE:2018年11月编程语言排行榜
- 2020 ACL《CoGAN》- Aspect Sentiment Classification with Document-level Sentiment Preference Modeling
- android 根目录 文件 打包,Android image文件的打包和解包
- python运行时间表_Python基本操作的时间代价
- Java代码---双色球机选中奖概率
- 中信国安:奇虎360私有化交割完成
热门文章
- ECMAScript 5 —— 基本包装类型之String(下)
- git分支创建分支删除分支合并
- [Android Pro] 关于BitmapFactory.decodeStream(is)方法无法正常解码为Bitmap对象的解决方法...
- 微信小程序获取Token 存储2小时
- HashMap与LinkedHashMap的结构对比
- 一个时代的落幕!继苹果、火狐、Linux Lite之后,微软也放弃Flash
- Python使用matplotlib可视化模拟正弦余弦折线图
- 面向对象的三个基本特征_杂谈:JavaScript面向对象
- 10月15号和16号PC端云音乐项目总结
- Abp框架 Abp中使用Redis