摘要:

注解和反射是相互联系的知识,所以应该放到一起来说。

注解: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)的更多相关文章

  1. Java注解与反射

    概要 本文主要是总结Java注解与反射的相关知识,加深自己对Java类动态语言的理解,同时为日后学习Spring打下基础. 注解: 什么是注解 Annotation的作用 不是程序本身,但是可以对程序 ...

  2. 小白都能学会的Java注解与反射机制

    前言 Java注解和反射是很基础的Java知识了,为何还要讲它呢?因为我在面试应聘者的过程中,发现不少面试者很少使用过注解和反射,甚至有人只能说出@Override这一个注解.我建议大家还是尽量能在开 ...

  3. Java注解和反射笔记

    Java注解和反射笔记 1 注解 1.1 定义 Annotation是从JDK1.5开始引入的技术 作用 不是程序本身,可以对程序作出解释 可以被其他程序(编译器等)读取 格式 @注释名,可以添加一些 ...

  4. Java注解类型(@Annotation)

    简述 注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类.而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy1.通过代理对象调 ...

  5. java注解实例-反射生成sql

    定义描述用户表的注解: package dao; import java.lang.annotation.ElementType; import java.lang.annotation.Retent ...

  6. Java注解和反射

    1.注解(Annotation) 1.1.什么是注解(Annotation) 注解不是程序本身,可以在程序编译.类加载和运行时被读取,并执行相应的处理.注解的格式为"@注释名(参数值)&qu ...

  7. JAVA 注解和反射

    通过反射来获取类 Class MyTest{ private String name; public String showName{ System.out.println(this.name); } ...

  8. java注解和反射学习

    spring框架很多地方都应用了注解,如@controller,所以要学会自定义注解及注解处理器. Class<?> cl=Class.froName(className) //通过类名加 ...

  9. java自定义注解与反射

    java注解与反射一.Java中提供了四种元注解,专门负责注解其他的注解,分别如下 1.@Retention元注解,表示需要在什么级别保存该注释信息(生命周期).可选的RetentionPoicy参数 ...

  10. Java基于注解和反射导入导出Excel

    代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...

随机推荐

  1. centos6.5升级python3.6并安装boto3模块

    1.先升级openssl yum安装各种依赖,yum install gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel tar zxvf ...

  2. vm虚拟机和主机之间互传文件

    u盘大家都有吧,用u盘吧,超方便! vmtools 从主机传文件到虚拟机 可以通过之间复制粘贴/拖拽 或者共享文件夹的方式 从虚拟机传文件到主机,查到了说说是要在虚拟机里面改一个什么映射设置,改完之后 ...

  3. COM三大接口:IUnknown、IClassFactory、IDispatch。

    (1)COM组件有三个最基本的接口类,分别是IUnknown.IClassFactory.IDispatch. COM规范规定任何组件.任何接口都必须从IUnknown继承,IUnknown包含三个函 ...

  4. 离线谷歌地图API的开发笔记(二)

    一.地图引擎介绍 离线地图引擎运行在WINDOWS平台上,底层由Visual c++语言开发,编译为OCX插件方式.占用文件少,便于二次开发的快速安装部署. 具有专业地图的基础操作功能:地图放大.缩小 ...

  5. 前端项目线上部署记录 | vue-cli

    一.修改公开路径后打包;npm run build 新建一个vue.config.js文件,如果本地打开,则路径为"./',线上则'/',不加'.' module.exports = { p ...

  6. SQL Server 机器学习服务-概述与实战(转)

    原帖地址:https://d-bi.gitee.io/sqlserver-ml-services/ 新年第一篇,去旧迎新.本文内容,既旧也新.旧之处在于,SQL Server 机器学习服务是微软在SQ ...

  7. (四)REDIS-布隆过滤器及缓存

    (一)布隆过滤器 布隆过滤器(英语,Bloom Filter)是1970年由布隆提出的.它实际是一个很长的二进制数组+多个随机Hash算法映射函数,主要用于判断一个元素是否在集合中. 通常我们会遇到很 ...

  8. Java 8 stream 做大于几的统计

    Map<String, Integer> marketplaceIdCountMap = amazonTemplateService .getAmazonTemplateList(quer ...

  9. Redis缓存之spring boot 部署

    一.环境准备工作 # 1.JDK 安装与环境变量# 下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-8u102-linux-x64.tar.gz [root@localhost data ...

  10. 【2】locust性能测试原理分析+登录测试脚本+总结

     login_per_test1.py #对登录功能进行单点性能测试(一组测试数据)#发送首页请求,通过locust进行性能测试from locust import HttpLocust,task,T ...