通过Java反射机制构造类的对象

来源:互联网 发布:知我者莫若你下一句 编辑:程序博客网 时间:2024/05/17 03:15

参考的帖子如下:

http://www.iteye.com/topic/1123081

package com.baobaotao.reflect;public class Car {  private String brand;  private String color;  private int maxSpeed;  //①默认构造函数  public Car(){}  //②带参构造函数  public Car(String brand,String color,int maxSpeed){   this.brand = brand;  this.color = color;  this.maxSpeed = maxSpeed;  }  //③未带参的方法  public void introduce() {   System.out.println("brand:"+brand+";color:"+color+";maxSpeed:" +maxSpeed);  }  //带参数的getter/Setter方法  public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public int getMaxSpeed() {return maxSpeed;}public void setMaxSpeed(int maxSpeed) {this.maxSpeed = maxSpeed;}}
package com.baobaotao.reflect;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class ReflectTest {public static Car  initByDefaultConst() throws Throwable{//①通过类装载器获取Car类对象ClassLoader loader = Thread.currentThread().getContextClassLoader(); Class clazz = loader.loadClass("com.baobaotao.reflect.Car"); //②获取类的默认构造器对象并通过它实例化CarConstructor cons = clazz.getDeclaredConstructor((Class[])null); Car car = (Car)cons.newInstance();//③直接调用反射方法设置属性Method setBrand = clazz.getMethod("setBrand",String.class);       setBrand.invoke(car,"红旗CA72");Method setColor = clazz.getMethod("setColor",String.class);setColor.invoke(car,"黑色");Method setMaxSpeed = clazz.getMethod("setMaxSpeed",int.class);setMaxSpeed.invoke(car,200);return car;}public static void main(String[] args) throws Throwable {Car car = initByDefaultConst();car.introduce();}}




0 0