java的反射技术(三)
tic void main(String[] args) throws Exception {
method1(); // 获取属性
method2(); // 获取私有属性
}
// 获取属性
private static void method1() throws Exception {
// 获取Person的字节码对象。
Class clazz = Class.forName("com.java4fun.reflect.Person");
// 获取属性, 反射Person类的中 public String name = "java";属性
Field f = clazz.getField("name");
// 使用属性,需指定对象,为了方便,在这里直接通过传统的方法创建一个对象。
Person p = new Person();
Class type = f.getType();
if (type.equals(String.class)) {
String name = (String) f.get(p);
System.out.println(name);
}
}
// 获取私有属性
private static void method2() throws Exception {
// 获取Person的字节码对象。
Class clazz = Class.forName("com.java4fun.reflect.Person");
// 获取私有属性, 反射Person类的中 private int age = 2013;属性
Field f = clazz.getDeclaredField("age");
f.setAccessible(true);
// 使用属性,需指定对象,为了方便,在这里直接通过传统的方法创建一个对象。
Person p = new Person();
Class type = f.getType();
if (type.equals(int.class)) {
int age = f.getInt(p);
System.out.println(age);
}
}
}