什么是反射?

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

反射就是把java类中的各种成分映射成一个个的Java对象,在运行时可以知道任意一个类的属性和方法

反射机制如何实现?

Java反射机制的实现要借助于4个类:Class,Constructor,Field,Method;

其中class代 表的是类对象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象,

class类介绍

作用

一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。

获取Class对象的三种方式

  • 类名.class
  • 对象.getClass()
  • Class.forName(类全名)

获取属性

  • getFiled: 获取public类型的属性
  • getFileds:获取所有public类型的属性
  • getDeclaredField:获取被定义过的属性(包括private、protected)
  • getDeclaredFields:获取所有被定义过的的属性

获取方法

getMethod:获取public类型的方法

getMethods:获取所有public类型的方法

getDeclaredMethod:获取被定义过的方法(包括private、protected)

getDeclaredMethods:获取所有被定义过的的方法

invoke(class, method):就是调用Method类代表的方法。可以实现动态调用

获取构造方法

getConstructor:获取public类型的构造方法

getConstructors:获取所有public类型的构造方法

getDeclaredConstructor:获取被定义过的构造方法(包括private、protected)

getDeclaredConstructors:获取所有被定义过的构造方法

创建对象

newInstance:字节码类型的实例clazz调用newInstance()方法会返回一个Object类型的对象

Constructors.newInstance:

获取父类

接口:

  • getAnnotatedInterfaces--- AnnotatedType[]:
  • getInterfaces---Class[]:

父类

  • getSuperclass:
  • getInterfaces:

Modifier

内省

内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。

不应该将内省和反射混淆。相对于内省,反射更进一步,是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。


 
 JavaBean

JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。

获取BeanInfo

BeanInfo这个类就可以获取到类中的方法和属性。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性

方法

  • Introspector.getBeanInfo(Class A)---获取BeanInfo:
  • beaninfo.getPropertyDescriptors(): 获得 beans propertydescriptor
  • getReadMethod:获取一个对象的所有属性字段名称和其对应的值  获取get方法
  • getWriteMethod:获取set方法
       Class clazz = obj.getClass();//获取对象的类型PropertyDescriptor pd = getPropertyDescriptor(clazz,propertyName);//获取 clazz 类型中的 propertyName 的属性描述器Method getMethod = pd.getReadMethod();//从属性描述器中获取 get 方法Method setMethod = pd.getWriteMethod();//从属性描述器中获取 set 方法

动态代理

  1. JDK动态代理
  2. CLIB代理(第三方)

详情

Java反射--藤原豆腐店自用相关推荐

  1. Java八股文--藤原豆腐店自用

    目录 1.Java跨平台的原理 2.基本数据类型所占字节数 3.Java中表示价格为啥不用double,而是用BigDecimal 4.双精度&单精度的区别 5.面向对象的特征 5.1.封装: ...

  2. 线程八股文--藤原豆腐店自用

    目录 1.什么是进程.什么是线程,他们之间是什么关系? 1.1.进程是什么? 1.2.线程是什么? 1.什么是进程.什么是线程,他们之间是什么关系? 1.1.进程是什么? 是具有一定独立功能的程序,他 ...

  3. 数据库八股文--藤原豆腐店自用

    目录 数据库的分类和常见的数据库你知道那些? 关系型数据库 非关系型数据库 介绍一下三范式,设计表时一定要追求三范式吗? 数据库的分类和常见的数据库你知道那些? 关系型数据库 典型产品:MySQL.S ...

  4. JVM--藤原豆腐店自用

    目录 1.类加载 1.1.JVM类加载过程: 1.2.类的初始化过程 1.3.类加载器 1.3.1.启动类加载器(BootStrap ClassLoader) 1.3.2.扩展类加载器(Extensi ...

  5. JDBC--藤原豆腐店自用

    Java Database Connectivity,简称JDBC 是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法. 驱动程序 驱动程序:数据 ...

  6. 【转】java反射--注解

    [译]8. Java反射--注解 原博地址:https://www.cnblogs.com/penghongwei/p/3300087.html 翻译原文地址:http://tutorials.jen ...

  7. Java 反射 不定参数bug

    Java 反射 不定参数bug 遇到的第一个关于反射的bug:java.lang.IllegalArgumentException: wrong number of arguments的问题解析如下: ...

  8. 粗浅看 java反射机制

    Java 反射是 Java 被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运 行时透过 Reflection APIs 取得任何一个已知名称的class 的内部信息,包括其 modifi ...

  9. Java反射,从0开始

    目录 静态VS动态语言 Java Reflection(反射)介绍 Java反射机制提供的功能 Java反射优点和缺点 反射相关的主要API 获取运行时类的完整结构 反射的使用 有了Class对象,如 ...

最新文章

  1. 对数函数定义域和值域为r_100观察法求函数的值域
  2. AI 还原宋代皇帝,原来这么帅?!
  3. ssm中shiro的使用
  4. WIN7的MKLINK命令,创建文件(夹)连接(链接)
  5. 深入理解Java虚拟机(2)
  6. Redis基础高级学习笔记
  7. 一款好用的轮播插件swiper,适用于移动端和web
  8. python 菜鸟教程字符串反转函数_转自python的菜鸟教程---字符串相关操作
  9. java编程思想怎么样_读完java编程思想后的思考?
  10. 无法连接到WMI提供程序。你没有权限或者该服务器无访问
  11. 6、vueJs基础知识06
  12. 【扯淡】今天看了《写给失眠者的心理学》,下面开始借鉴与脑洞大开
  13. 互联网+ 何人能挡?带着你的Code飞奔吧!
  14. keil4 c语言标准,求助!关于KEIL4和C语言
  15. 系统架构设计师论文范文
  16. 将多个Bip动作合成一个
  17. 【遇到的问题】VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。
  18. 10 Habits of All Successful People 成功人士的10个习惯
  19. cdr安装成功后出现重启计算机,CDR安装后重启电脑就打不开是什么原因?
  20. 一年365天,把1.0作为每天的能力值基础,每天原地踏步 则能力值为1.0,如果每天努力一点点则能力值提高1%,每天再努力一点则能力值提高2%,那一年后,这3种行为收获的成果相差多少呢?

热门文章

  1. 过压电路保护元器件详解,一文就看明白了
  2. 微信h5互动小游戏制作心得
  3. 2020年全球救市两种方法的分析,从世界高度来理解富人思维
  4. 内网终端管理:独立或统一管理都将大行其道
  5. 社工小组 计算机小组活动,小组工作活动计划1
  6. 数值计算之 最小二乘法(1)最小二乘计算与线性方程
  7. 解题报告Best Time to Buy and Sell Stock with Cooldown
  8. 阿里接口调用——智能植物识别(含花卉与杂草)
  9. 【Java设计模式】外观模式
  10. 手把手教你接入快应用账号开发-客户端方式