Java反射

获取Class对象

一:任何一个类都有一个隐含的静态成员变量class,这种方式是通过获取类的静态成员变量class得到的

Class class1=XXX.class

二:xxx是XXX的一个对象,这种方式是通过一个类的对象的getClass()方法获得的

Class class2=xxx.getClass( )

三:Class类调用forName方法,通过一个类的全量限定名获得

Class c3 = Class.forName(“com.trigl.reflect.Code”);

获取成员方法信息

// 得到该类所有的方法,不包括父类的
public Method getDeclaredMethod(String name, Class<?>... parameterTypes) 

// 得到该类所有的public方法,包括父类的
public Method getMethod(String name, Class<?>... parameterTypes) 
获取所有方法的数组:
Class c = Class.forName("com.mohon.Person");

// 得到该类所有的方法,不包括父类的
Method[] methods = c.getDeclaredMethods(); 


// 得到该类所有的public方法,包括父类的
Method[] methods = c.getMethods();

获取成员变量信息

// 获得该类自身声明的所有变量,不包括其父类的变量
public Field getDeclaredField(String name) 

 // 获得该类自所有的public成员变量,包括其父类变量
public Field getField(String name)
获取所有成员变量的数组
Field[] fields = c.getDeclaredFields();

获取构造函数

//  获得该类所有的构造器,不包括其父类的构造器
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 

// 获得该类所以public构造器,包括父类
public Constructor<T> getConstructor(Class<?>... parameterTypes) 
注意newInstance

Class的newInstance方法,只能创建只包含无参数的构造函数的类.
如果某类只有带参数的构造函数,那么就要使用另外一种方式:fromClass.getDeclaredConstructor(String.class).newInstance("参数");

获取该类的所有构造函数,放在一个数组中
Constructor[] constructors = c.getDeclaredConstructors();

参考:
http://www.jianshu.com/p/1a60d55a94cd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值