1. 反射之前的正常person操作
package com. fanshe;
public class Person {
private String name;
public int age;
public Person ( ) {
}
public Person ( String name, int age) {
this . name = name;
this . age = age;
}
private Person ( String name) {
this . name = name;
}
@Override
public String toString ( ) {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}' ;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public int getAge ( ) {
return age;
}
public void setAge ( int age) {
this . age = age;
}
public void show ( ) {
System. out. println ( "我是一个人" ) ;
}
private String showNatios ( String nation) {
System. out. println ( "我的国际是" + nation) ;
return nation;
}
}
package com. fanshe;
public class test {
public static void main ( String[ ] args) {
Person p1 = new Person ( "Tmo" , 12 ) ;
p1. age= 100 ;
System. out. println ( p1. toString ( ) ) ;
p1. show ( ) ;
}
}
2. 反射之后的操作
package com. fanshe;
import java. lang. reflect. Constructor;
import java. lang. reflect. Field;
import java. lang. reflect. InvocationTargetException;
import java. lang. reflect. Method;
public class test {
public static void main ( String[ ] args) throws Exception {
Class clazz = Person. class ;
Constructor cons = clazz. getConstructor ( String. class , int . class ) ;
Object obj = cons. newInstance ( "Tom" , 12 ) ;
Person p= ( Person) obj;
System. out. println ( p. toString ( ) ) ;
Field age = clazz. getDeclaredField ( "age" ) ;
age. set ( p, 10 ) ;
System. out. println ( p. toString ( ) ) ;
Method show = clazz. getDeclaredMethod ( "show" ) ;
show. invoke ( p) ;
}
}