java注解和反射(Annotation and Reflect)
摘要:
注解和反射是相互联系的知识,所以应该放到一起来说。
注解:JDK5之后才有的技术,为了增加对元数据的支持,可以将注解理解为代码中的特殊标记,一种修饰。而这些标记是可以在代码编译,类的加载,和运行中被读取并进行相应的操作的一系列数据。
它提供了一种类似于注释的东西,但是是面向于计算机程序的。用来将任何的元数据(metadata)与程序元素()进行联系。为程序的元素()加上了更直观的说明,这些说明信息与程序的业务逻辑无关, 起到一个说明,配置的作用。注释包含在java.lang.annotation中
注解:给计算机看的 注释:给程序员看的
反射:简单来说,反射就是在运行时获取任意的class和Object成员属性,如成员变量,成员方法,构造函数和Annotation。
正文:
注解(Annotation):
*定义:注解(Annotation),也叫做元数据,一种代码级别的说明,是在JDK1.5之后引入的,与类,接口,枚举都在一个层次。主要声明在包、类、字段、方法、局部变量等前面对这些变量进行说明,注释。
*如何使用:@注解名称
*作用:1、编码文档:通过代码标识的注解可以生成doc文档(doc文档)
2、代码分析:使用代码中标识的注解对代码进行分析(使用反射的方法)
3、编译检查:使用代码中标识的注解对在编译时可以进行基本的编译检查(例如@Override)
分类: JDK中预定的一些注解 自定义的注解 在程序中使用解析注解
java预定注解:
1、Override注解:在类继承时候看这个类在父类中是否存在,确保子类确实重写了父类的方法
2、Deprecated注解:已经过时的一些注解
3、SuppressWarning:被这个注解标识的元素以及元素的属性和方法都会被取消编译器警告
自定义注解:
**格式:
元注解
public @interface 注解名称{}
**本质:注解本质就是一个接口,该接口继承与annotation接口
*public interface myanno extends java.lang.annotation.Annotation{} (这是对一个myanno注解进行javap反编译之后形成的东西)
**属性:接口中的抽象方法(因为注解本身就是一个接口,既然和接口一样,那注解中也可以进行定义方法)
*要求:属性的返回值类型
1、四种基本类型 2、String 3、枚举 4、注解 5、以上类型的数组
定义了属性,需要时候 给属性赋值:
**元注解:描述注解的注解
@target: 描述注解作用的位置
@retention:注解作用的阶段(java的三个阶段,源代码阶段、class阶段、run阶段)
*@Rentention(RententionPolicy.RUNTIME):当前注解被描述,会被保留到class文档中,并且在JVM中进行执行
@Documented:是否能被javadoc提取为doc文档
@Inheirted: 这个注解是否能被子类进行提取
在程序中使用(解析)注解:获取注解中定义的属性值
按照周期分: 代码编辑时候注解 运行时注解 编译时注解(java的代码编辑有三个周期:a、代码编辑(sourec) b、编译成.class文件 (class) c、放到JMV里面进行运行(runtime))而注解也正好对应而了这三个阶段
java注解和反射(Annotation and Reflect)的更多相关文章
- Java注解与反射
概要 本文主要是总结Java注解与反射的相关知识,加深自己对Java类动态语言的理解,同时为日后学习Spring打下基础. 注解: 什么是注解 Annotation的作用 不是程序本身,但是可以对程序 ...
- 小白都能学会的Java注解与反射机制
前言 Java注解和反射是很基础的Java知识了,为何还要讲它呢?因为我在面试应聘者的过程中,发现不少面试者很少使用过注解和反射,甚至有人只能说出@Override这一个注解.我建议大家还是尽量能在开 ...
- Java注解和反射笔记
Java注解和反射笔记 1 注解 1.1 定义 Annotation是从JDK1.5开始引入的技术 作用 不是程序本身,可以对程序作出解释 可以被其他程序(编译器等)读取 格式 @注释名,可以添加一些 ...
- Java注解类型(@Annotation)
简述 注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类.而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy1.通过代理对象调 ...
- java注解实例-反射生成sql
定义描述用户表的注解: package dao; import java.lang.annotation.ElementType; import java.lang.annotation.Retent ...
- Java注解和反射
1.注解(Annotation) 1.1.什么是注解(Annotation) 注解不是程序本身,可以在程序编译.类加载和运行时被读取,并执行相应的处理.注解的格式为"@注释名(参数值)&qu ...
- JAVA 注解和反射
通过反射来获取类 Class MyTest{ private String name; public String showName{ System.out.println(this.name); } ...
- java注解和反射学习
spring框架很多地方都应用了注解,如@controller,所以要学会自定义注解及注解处理器. Class<?> cl=Class.froName(className) //通过类名加 ...
- java自定义注解与反射
java注解与反射一.Java中提供了四种元注解,专门负责注解其他的注解,分别如下 1.@Retention元注解,表示需要在什么级别保存该注释信息(生命周期).可选的RetentionPoicy参数 ...
- Java基于注解和反射导入导出Excel
代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...
随机推荐
- 镜像问题、简易安装,系统语言更改,中文输入,提高下载速度,Firefox的语言更改,Firefox上网速度慢
一开始用的镜像不记得是从哪里下载过来的,反正 装好之后分辨率特别低.镜像放在: "D:\迅雷下载\2020大创\Ubuntu\ubuntu-16.04.6-desktop-i386.iso& ...
- Jquery 如何替换html字符串中标签属性值 ??
如何利用JQuery 替换HTML字符串中的属性值呢? 如 html 字符串有很多 img标签,现在需要修改 img的src值 var html="<div style="t ...
- redis获取图形验证码
1.在pom文件中先导入生成图像的依赖包 <dependency> <groupId>com.baomidou</groupId> <artifactId&g ...
- linux kali 报错Intel VT-x
报错原因:第一次安装虚拟机intel vt-x 处于禁用状态,没有启用 分析思路:找到 Intel vt - x 位置,并打开 .(intel - x在bios) 解决方法: 联想笔记本为例:进入bi ...
- 自定义类型与Qt元对象系统
个人发现一篇关于在Qt中使用元对象系统支持自定义类型的好博文,记录下防止丢失(如有侵权,烦请告知删除).博文原地址:http://qtdebug.com/qtbook-misc-qvariant/ Q ...
- 2022.11.13 NOIP2022 模拟赛八
「ROI 2017 Day 2」存储器 无聊的题. 首先 \(s\) 中每一个片段,其在 \(t\) 中对应的字符必然是相同的. 对于 \(t\) 中的每一个片段,考虑检查能否操作出这个片段,实际上只 ...
- JDK、JRE、JVM和i++
JRE:运行环境(包含JVM和JAVA核心类库) JDK:JAVA开发工具包(包含JRE和开发工具)----开发工具:指编译工具javac和运行工具java JVM:虚拟机,保证了跨平台 ++i:先运 ...
- vue 报错Uncaught (in promise) cancel
解决:.catch()不能省略(因为取消操作时,无法捕获) .then(res => {...}) .catch(()=>{});(then之后把catch加上)
- TS语法中interface和class的理解
在TS中interface和后端语言如c#中的概念是不一样的,在TS中interface相当于定义了一种类型,是设置自定义类型的方式,区分与基础类型(number.string等),当定义变量时,就可 ...
- Unity 使用JIMO 做MR扫图(Vuforia) 优化
最近在做一个用MR眼镜端扫描图片做定位用, 使用的Vuforia提供的图片识别功能. 在眼镜端因为摄像机很挫,导致扫描出来的图片 位置存在着一定的偏差.就做了个小优化. 1.扫图的角度设定,垂直于图片 ...