在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息保存着每个对象所属的类足迹。虚拟机利用运行时信息选择相应的方法执行。然而,可以通过专门的Java类访问这些信息。保存这些信息的类被称为Class,通用超类Object的getClass()方法将会返回一个Class类型的实例。可以利用Class类的静态方法forName(String className)获得对应className的Class对象。如果类名保存在字符串中,并可以在运行中改变,那么就可以使用这个方法来构建类实例。当然,这个方法只有在className是有效的类名或接口时才能够顺利执行,否则,forName()方法将抛出一个“checked exception”。Class对象的newInstance()方法可以用来快速的创建一个类地实例。newInstance()方法调用默认的构造器初始化新创建的对象,如果没有默认的构造器,就会抛出一个异常。将Class类的forName(String className)与newInstance()方法配合起来使用,便可以根据存储在字符串中的类名创建一个对象实例。
2.2 通过属性名,设置并获得类属性值
在学习通过反射机制对类属性操作前先来回顾一下以前是如何对类属性进行操作的,再与通过反射机制操作类属性进行对比,即可看出反射机制功能的强大。客户(Customer)类有一个名称(name)属性,Customer类的代码如下:
public class Customer {
public Customer(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
…other methods
private String name = ""; //客户名称
…//other properties
}
|