反射的实现_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 反射的实现

反射的实现

 2013/10/11 12:35:34  whiteotiger  程序员俱乐部  我要评论(0)
  • 摘要:Java运行通过程序化的方式间接对Class进行操作,Class文件由类装载期装载后,在JVM中形成一份描述Class结构的元信息,通过对该元信息对象,可以获得Class的结构信息,如构造函数,属性,方法等,java允许用户用这个Class相关的元信息对象间接调用class对象的功能。如下一个类Car,和利用反射机制调用他的类ReflectTestpackagereflect;//实体类publicclassCar{privateStringbrand;privateStringcolor
  • 标签:实现 反射
    Java运行通过程序化的方式间接对Class进行操作,Class文件由类装载期装载后,在JVM中形成一份描述Class结构的元信息,通过对该元信息对象,可以获得Class的结构信息,如构造函数,属性,方法等,java允许用户用这个Class相关的元信息对象间接调用class对象的功能。
    如下一个类Car,和利用反射机制调用他的类ReflectTest
package reflect;
//实体类
public class Car {
	private String  brand;
	private String color;
	private int maxSpeed;
	/**
	 * 构造方法
	 */
	public Car() {
		// TODO Auto-generated constructor stub
	}
	/**
	 * 无参构造方法
	 */
	public Car(String  brand,String  color,int maxSpeed){
		this.brand=brand;
		this.color=color;
		this.maxSpeed=maxSpeed;
		
	}
	/**
	 * 无参方法
	 * @return
	 */
	
	public void introduce(){
		
		
		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 reflect;
//反射调用类
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

import org.omg.CORBA.Current;

public class ReflectTest {
	
	public static Car initByDefaultConst() throws Throwable {
		//通过类加载器加载类对象
		ClassLoader loader =Thread.currentThread().getContextClassLoader();
		Class clazz = loader.loadClass("reflect.Car");
		
		//获取类的默认构造器,构造类
		Constructor cons = clazz.getConstructor();
		Car car = (Car) cons.newInstance();
		
		//通过反射方法设置属性
		Method setBrand = clazz.getMethod("setBrand", String.class);
		setBrand.invoke(car, "玛莎拉蒂");
		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 =ReflectTest.initByDefaultConst();
		car.introduce();
	}

}

上一篇: <.net>委托初探 下一篇: 枚举的使用
发表评论
用户名: 匿名