Java反射机制

一、反射的概念

1.反射是指程序在运行时,可以通过反射机制拿到任何一个类的内部所有信息。
2.可以获得类的所有属性信息,包括私有属性,并对其进行操作
3.可以获得对象所对应的类
4.可以拿到本类,或父类中的方法,并且对其进行操作。

二、Class对象的使用

常用方法:
getName:获得类对应的名称
getDeclaredFields:获得类中所有参数  私有的也可以获取到
getFields:只能获取共有的
getDeclaredMethod:获得类中的所有方法
getContructors:获得类中的构造方法
newInstance:实例化对象

获取class对象的3中常用方式

1.通过forName方式

//path:类对应的完整路径=包名加类名
Class demo1=Class.forName("com.tjpld.model.Book");

2.getClass方式

Book demo2=new Book();
demo2.getClass();

3.类名.Class方式

//直接通过类名.Class
Class demo3=Book.class;
Book  book=demo3.newIntances();

三、Field对象—-Reflect包

用于表示类中,接口中所有属性对象的一个类

getName:获得属性的名称
getType:获得属性的类型
getObject obj):取得obj对象中这个属性的值
setObject obj,Object value):向obj这个对象插入一个value值
setAccessible(true):启用禁用访问权限

使用方法

1.testDemo(Class class){
Field fields[]=class.getDeclaredFields()
  for(Field ff:fields){
     system.out.prinft(ff.getName()+"/"+ff.getType());
  }
}
2. testDemo2(Object obj){
  Class class=obj.getClass();
  Field fields[]=class.getDeclaredFields()
  for(Field ff:fields){
   ff.setAccess;
     system.out.prinft(ff.getName()+"/"+ff.get(obj));//get方法并不能直接拿这个对象中的值,而是要先启用拿到值的权限
  }

}

Method方法的使用

常用方法

getName:方法名称
getReturnType:方法的返回值类型
invoke(Object obj,Object..args):根据object对象调用方法
getParamterType:得到参数类型

使用方法:

showUser(Object obj){
 Class cls=obj.getClass();
 //方法名称
 如果是多参数类型的方法 传值传入一个Class类型的数组Class[] cls={String.class,int.class}
 Method method=cls.getMethod("getName",String.class参数类型----没有用null);
 //调用多参数的方法 就传入一个object类型的数组
 method.invoke(obj,参数----没有就new Object[0])
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值