【Java】Java的反射机制,
分享于 点击 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).
相关文章
- 暂无相关文章
用户点评