java 反射详解

1、反射的概念

Java的反射(reflection)机制是指在程序的运行过程中,可以创建任意类的对象

对于任意一个类,了解类的信息以及属性和方法

对于任意一个对象,可以调用对象的属性和方法

这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。

好处

1.增加程序的灵活性,可以在运行的过程中动态对类进行修改和操作

2.可以在运行时轻松获取任意一个类的方法、属性,并且还能通过反射进行动态调用

缺点:

1.使用反射以后,代码的可读性会下降的
2.反射可以绕过一些有限制访问的属性或方法,可能会导致破坏代码本身的抽象性

2、反射机制相关的类

   类加载时,JVM自动生成类的Class类对象。

   将类的成员进行拆分,拆分成一个个对象。

描述

Class

代表对象

Field

代表属性对象

Constructor

代表构造方法对象

Method

代表方法对象

  1. 创建Class类对象三种方式

   Class.forName(“全限定名”);   //全限定名:包名+类名  (推荐)

   类名.class ;

   对象名.getClass();

列图展示:


示例代码

  定义Students类

3、Class类对象常用的方法

   1. 反射获取类的包名、类名、修饰符....基本信息的方法

方法名

描述

getPackage()

获取包名

getName()

获取全限定名.(包名+类名)

getSimpleName()

获取类名

getModifiers()

获取修饰符

getSuperclass()

获取父类

getInterfaces()

获取实现的父接口

 列图展示:


 2. 反射获取构造方法对象 Constructor

方法名

描述

getConstructor(<?>... parameterTypes)

获取指定的公共的构造方法

getConstructors()

获取所有的公共的构造方法

getDeclaredConstructor(<?>... parameterTypes)

获取指定的构造方法

getDeclaredConstructors()

获取所有的构造方法

   构造方法对象常用的方法

方法名

描述

getModifiers()

获取修饰符

getName()

获取构造方法名

getParameterCount()

获取参数个数

newInstance()

创建对象

例图展示:


3.反射获取属性对象 Field

方法名

描述

getField(String name)

获取指定的公共的属性对象

getFields()

获取所有的公共的属性对象

getDeclaredField(String name)

获取指定的属性对象

getDeclaredFiles()

获取所有的属性对象

      属性对象常用的方法

方法名

描述

getModifiers()

获取修饰符

getType()

获取数据类型

getName()

获取属性名

set(Object obj ,Object value)

给指定对象的属性赋值

get(Object obj)

获取指定对象的属性值

例图展示:


4. 获取方法对象 Method

方法名

描述

getMethod(String name, <?>... parameterTypes)

获取指定的公共的方法对象

getMethods()

获取所有的公共的方法对象

getDeclaredMethod(

String name, <?>... parameterTypes)

获取指定的方法对象

getDeclaredMethods()

获取所有的方法对象

          方法对象常用的方法

方法名

描述

getModifiers()

获取修饰符

getReturnType()

获取返回值类型

getName()

获取方法名

getParameterCount()

获取参数个数

invoke(Object obj,Object...args)

调用方法

  1. 私有化成员访问,设置忽略访问修饰符

setAccessible(true);

例图展示:

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值