Java Reflection 反射

反射机制指的是程序在运行时能够获取自身的信息,Java中,无论生成某个类的多少个对象,这些对象都会对应于同一个Class对象。 要想使用反射,首先需要获得待处理类或对象所对应的Class对象。 

 

–Class类:代表一个类。

–Array类:提供了动态创建数组

对于以下三类组件中的任何一类来说 -- 构造函数、字段和方法 -- java.lang.Class 提供四种独立的反射调用,以不同的方式来获得信息。调用都遵循一种标准格式。以下是用于查找构造函数的一组反射调用:


–Constructor 
类:代表类的构造方法

 

Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数,

Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构造函数(与接入级别无关)
Constructor[] getConstructors() --
获得类的所有公共构造函数
Constructor[] getDeclaredConstructors() --
获得类的所有构造函数(与接入级别无关)

Object objectCopy=classType.getConstructor(new Class[]{}).newInstance(new Object[]{});

以上代码先调用Class类的getConstructor()方法获得一个Constructor 对象,它代表默认的构造方法,然后调用Constructor对象的newInstance()方法构造一个实例。

 

 

 

–Field 类:代表类的成员变量

 

Field getField(String name) -- 获得命名的公共字段
Field getDeclaredField(String name) --
获得类声明的命名的字段
Field[] getFields() --
获得类的所有公共字段

Field[] getDeclaredFields() -- 获得类声明的所有字段

 


获得字段信息的Class 反射调用不同于那些用于接入构造函数的调用,在参数类型数组中使用了字段名:

Field fields[]=classType.getDeclaredFields();

Class 类的getDeclaredFields()方法返回类的所有属性,包括publicprotected、默认和private访问级别的属性

 

–Method类:代表类的方法


Method getMethod(String name, Class[] params) --
使用特定的参数类型,获得命名的公共方法
Method getDeclaredMethod(String name, Class[] params) --
使用特写的参数类型,获得类声明的命名的方法

Method[] getMethods() -- 获得类的所有公共方法
Method[] getDeclaredMethods() --
获得类声明的所有方法 

 

Method类的invoke(Object obj,Object args[])方法接收的参数必须为对象,如果参数为基本类型数据,必须转换为相应的包装类型的对象。invoke()方法的返回值总是对象,如果实际被调用的方法的返回类型是基本类型数据,那么invoke()方法会把它转换为相应的包装类型的对象,再将其返回

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值