了解反射,我是从类的定义入手的,首先,类是表示具有共同特性的事物的
集合,并将这个集合抽象成一个概念,这就是类。而java的一个类也具有它的
特征,比如类中有各种属性,方法,实现的接口等。所以也可以把java的类也
通过这些共性抽象成一个类。在java中把这个类取名叫Class。Class类就是表示
java各种类的一个类。
视频中描述的关于反射的概念,我觉得非常精辟!:
反射就是把java类中的各种成分映射成相应的java类。
比如把类中的属性映射成:Field类。
把构造方法映射成:Constructor类等等。
了解了这些,也很容易猜到这些Class类的作用,就是可以使用Class类的得到某
个类里面的各种属性、方法、接口等、并且可以用某个类生成它的实例对象,取
得对象里的属性、调用对象中的方法!
Class类:
Class类的构造方法是私有化的,也就是说不能通过new来创建Class类的实例对象。
但它提供了Class.forName(String className)这个静态方法来生成一个实例对象。
也就是从文件的绝对路径名,可以生成Class类的实例对象。
也可以通过:类名.class 和 对象名.getClass()来得到Class类的实例对象。
关于*.Class其实就是*这个类的字节码文件···。
Field类:
表示java类中各种属性的一个类。
Method类:
表示java类中方法的类。
Constructor:
表示java类中构造方法的类。
通过以上的各种类,我们可以利用反射机制取得某个类的所有属性,实现的接口,
所有构造方法,以及成员方法。并可以利用这些产生实例对象,且得到此类的实例对
象中的各种属性和方法。
*由于数组也是引用类型,是Object的子类,我们同样可以利用反射机制操作数组。
以下是两个用于巩固学习的练习,ReflectPoint类是一个被测试的类,通过RelectTest
演示了如何使用反射调用ReflectPoint类的各种方法和操作此类对象的属性。
为了方便,直接Throws Exception```
定义一个ReflectPoint类:
定义ReflectTest类: