黑马程序员——Java高新技术---反射

本文介绍了Java中的反射机制,包括理解反射的概念,反射操作如获取Class对象的三种方式,以及如何通过反射调用类的方法和构造函数。反射使得程序在运行时能够动态地获取类的信息并进行操作。
摘要由CSDN通过智能技术生成

——— android培训java培训、期待与您交流! ———

理解反射

所谓反射,就是把一个类里面所有的变量和方法以及构造器的信息都复制出来,可以查看,还可以使用。所以反射的出现让我们可以动态的实用类和对象,

反射的操作:得到类的Class对象,抽取Class对象中的属性信息,得到这个类的变量、方法和构造函数。
实践在java中即是:通过Class类获取原类的所有信息,通过Property类将信息保存到Field或Method、Constructor类中。

反射操作

代码:

Class c                 //得到某个类的Class对象
PropertyDescriptor pd   //得到这个类的某个属性
Method method           //得到这个属性的操作方法(getset)
                                // get -> getReadMethod()
                                // set -> getWriteMethod()
method.invoke(obj)  //对这个对象操作这个方法

  例:
    Class c = obj.getClass();
    PropertyDescriptor pd = new 
                      PropertyDescriptor(field,c);
    Method method = pd.getReadMethod();
    return method.invoke(obj);

Class类

Class类存放原类的所有信息,是反射的基础。

有三种方法得到类的Class对象:

  • 类名.class
  • 变量名.getClass()
  • Class.forName(“类名”)

    还有一种比较特殊的:数值类型.Type

代码:

Person person = new Person();

Class class1 = Person.class;
Class class2 = person.getClass();
Class class3 = Class.forName("Person");

将类的信息保存进Method对象中后,通过invoke()方法使用类中的方法。


Constructor

存放类的构造函数

代码:

Class c = Person.class;
//args...处是参数列表
Constructor constructor = c.getDeclaredConstructor(args...);

//获得所有构造函数
Constructor[] declaredConstructor = c.getDeclaredConstructors()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值