package com.ioc;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
/**
* java反射
*
*/
public class Car {
private Integer no;
private String name;
private String color;
public Car() {
}
public Car(Integer no, String name, String color) {
this.no = no;
this.name = name;
this.color = color;
}
public Integer getNo() {
return no;
}
public void setNo(Integer no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public static void main(String[] args) throws Exception {
// 获取类装载器
ClassLoader loader = Thread.currentThread().getContextClassLoader();
// 通过类装载器获取对象
Class clazz = loader.loadClass("com.ioc.Car");
// 获取类的默认构造器对象
Constructor cons = clazz.getDeclaredConstructor();// 无参构造函数
// 实例化对象
Car car = (Car) cons.newInstance();
// 有参构造函数
// Constructor cons = clazz.getDeclaredConstructor(Integer.class,
// String.class, String.class);
// Car car = (Car) cons.newInstance(1,"a","b");
// 通过反射方法设置属性
Method setNo = clazz.getMethod("setNo", Integer.class);
setNo.invoke(car, 1);
Method setColor = clazz.getMethod("setColor", String.class);
setColor.invoke(car, "黑色");
Method setName = clazz.getMethod("setName", String.class);
setName.invoke(car, "别克");
System.out.println(car.getNo() + "|" + car.getColor() + "|"
+ car.getName());
}
}