直接上代码。。。
package test;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class IOCTest {
public static void main(String[] args) throws Exception{
//获取classLoder 类对象(获取当前县城对象根据当前线程获取ClassLoader)
ClassLoader classLoder = Thread.currentThread().getContextClassLoader();
//根绝loaderClass 获取class 对象
Class clazz = classLoder.loadClass("test.Person");
//获取当前类的构造方法 参数是class[] 数组里面是构造方法参数的类型的class 形式
Constructor cons = clazz.getConstructor(new Class[]{int.class,String.class});
//根据构造方法对象调用newInstance 方法获取类对象
Person person = (Person)cons.newInstance(25,"张飞");
Person person1 = (Person)cons.newInstance(250,"张飞张飞");
//根绝类对象获取类中指定的方法
Method getNum = clazz.getMethod("getNum", null);
//通过反射 调 用指定类中的 方法
getNum.invoke(person, null);
Method getColor = clazz.getMethod("getColor", null);
System.out.println(getColor.invoke(person, null));
Method setColor = clazz.getMethod("setColor", String.class);
System.out.println(setColor.invoke(person, "王二"));
System.out.println(getColor.invoke(person, null));
Method getNum1 = clazz.getMethod("getNum", null);
getNum1.invoke(person1, null);
Method getColor1 = clazz.getMethod("getColor", null);
System.out.println(getColor1.invoke(person1, null));
Method setColor1 = clazz.getMethod("setColor", String.class);
System.out.println(setColor.invoke(person1, "王二王二"));
System.out.println(getColor.invoke(person1, null));
//System.out.println(person.getNum()+person.getColor());
}
}
/**
*person 类 就是一个普通的 VO对象类
*/
package test;
import java.io.Serializable;
public class Person implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
int num;
String color;
public String test(){
System.out.println("test1");
return "test2";
}
public Person(){}
public Person(int num,String color){
this.num = num;
this.color = color;
}
public int getNum() {
System.out.println(num);
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}