Android反射机制实例
创建一个测试类 Person
public class Person {
private String name = "张三";
private int age = 15;
private String desc ="这是一个学生";
public Person() {
}
public Person(String name, int age, String desc) {
this.name = name;
this.age = age;
this.desc = desc;
}
private String getName() {
return name;
}
private void setName(String name) {
this.name = name;
}
private int getAge() {
return age;
}
private void setAge(int age) {
this.age = age;
}
private String getDesc() {
return desc;
}
private void setDesc(String desc) {
this.desc = desc;
}
@NonNull
@Override
public String toString() {
return "name:"+getName()+",age:"+getAge()+",desc:"+getDesc();
}
}
下面我们进行反射测试
public static void main(String args[]){
Person person = new Person();
System.out.println("数据:"+person.toString());
//Log.e("数据",person.toString());
Class classs = Person.class;
try {
Person object = (Person) classs.newInstance();
Method m1 = classs.getDeclaredMethod("setAge", int.class);
m1.setAccessible(true);
m1.invoke(object,18);
Method m2 = classs.getDeclaredMethod("getAge");
m2.setAccessible(true);
// System.out.println("新数据:"+m2.invoke(object)+"");
Method m3 = classs.getDeclaredMethod("toString");
m3.setAccessible(true);
System.out.println("新数据:"+m3.invoke(object)+"");
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
下面是运行后打印的结果
数据:name:张三,age:15,desc:这是一个学生
新数据:name:张三,age:18,desc:这是一个学生