catch (Exception e) {
System.out.println("设置类属性: " + propertyName + "错误.");
}
}
}
有了RefObject类后,便可以调用它的setPropertyValue()、getPropertyValue()方法对类实例的属性进行操作了。
public class RefTest {
public static void main(String[] args)
{
Customer c = new Customer();
RefObject.setPropertyValue(c, "name", "Bonheur Co., Ltd.");
System.out.println("通过getName()方法获得类属性:" + c.getName());
System.out.println("通过反射获得类属性:" + RefObject.getPropertyValue(c, "name"));
}
}
RefTest运行后得到如下的结果:
通过getName()方法获得类属性:Bonheur Co., Ltd.
通过反射机制获得类属性:Bonheur Co., Ltd.
在上面的代码中,看到了反射机制的一个核心类:对象属性类(java.lang.reflect.Field)。现在将对它及它的一些主要方法进行说明。
在java.lang.reflect包中有3个最主要的类Field、Method和Constructor分别用于描述类的属性、方法和构造器。这3个类都有一个叫做getName()的方法,用来返回相应条目的名称。还有一个叫做getModifiers()的方法,它将返回一个整型数值,用不同的位开关设置描述public和static这些修饰符的使用状况。
Class类中的getFields()将返回类支持的public属性,其中包括其父类的public成员。getDeclaredFields()方法将返回类中声明的全部属性,其中包括private和protected成员,但不包括其父类的成员。getDeclaredField(String fieldName)方法将返回fieldName所表示的属性。
|