欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

【Java】Java的反射机制,

来源: javaer 分享于  点击 22854 次 点评:131

【Java】Java的反射机制,


package com.mrge.reflect;

public class Car 
{
	private String brand;
	private String color;
	private int 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;
	}

	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 is "+brand+"Color is "+color+"Max Speed is "+maxSpeed);
	}
}
怎样实例化Car对象,使用Java的反射机制来实现:

 
package com.mrge.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Method; public class ReflectTest { public static Car initByDefaultConst()throws Throwable { //通过类装载器获取Car类对象 ClassLoader loader=Thread.currentThread().getContextClassLoader();//ClassLoader是一个重要的Java运行时系统组件,它负责在运行时查找和装入Class字节码文件 Class clazz=loader.loadClass("com.mrge.reflect.Car"); //获取类的默认构造器对象并通过它实例化Car Constructor cons=clazz.getDeclaredConstructor((Class[])null); Car car=(Car)cons.newInstance();//效果等同于Car car=new Car(); //通过反射方法设置属性 Method setBrand=clazz.getMethod("setBrand",String.class); setBrand.invoke(car, "宝马X7"); 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(); } } 这样实现了Car类的实例化,并调用了对象!这也遵循一个规律,那就是先类(Class)---->构造函数(Constructor)---->方法(Method). 

相关文章

    暂无相关文章
相关栏目:

用户点评