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

本文详细介绍了如何使用Java的反射API来创建并操作对象,包括获取类、构造器、方法和字段,并通过反射方法设置属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考的帖子如下:

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"); 

		//②获取类的默认构造器对象并通过它实例化Car
		Constructor 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();
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值