java反射小例子

曲珂發表於2014-06-30
package com.txwsqk.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 intruduce(){
		System.out.println("brand "+brand+" color: "+color+" maxspeed: "+maxspeed);
	}
	
	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.txwsqk.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class CarTest {

	public static Car initByDefaultConst() throws Throwable{
		ClassLoader loader = Thread.currentThread().getContextClassLoader();
		Class<?> clazz = loader.loadClass("com.txwsqk.reflect.Car");
		Constructor<?> cons = clazz.getDeclaredConstructor((Class[])null);
		Car car = (Car) cons.newInstance();
		
		Method setBrand = clazz.getMethod("setBrand", String.class);
		setBrand.invoke(car, "BMW");
		Method setColor = clazz.getMethod("setColor", String.class);
		setColor.invoke(car, "red");
		Method setMaxspeed = clazz.getMethod("setMaxspeed", int.class);
		setMaxspeed.invoke(car, 150);
		return car;
		
	}
	public static void main(String[] args) throws Throwable {
		Car car = initByDefaultConst();
		car.intruduce();

	}

}

 輸出:

brand BMW color: red maxspeed: 150

相關文章