反 射

本文介绍Java反射机制的基本使用方法,包括通过不同方式获取Class对象、获取类名、属性和方法,以及如何利用反射创建对象并调用其构造方法与成员方法。

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

1、bean

public class User {
	private int id;
	private String name;
	public User(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	public User() {
		super();
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

2、reflection

public static void main(String[] args) throws Exception{
		// 类的路径  包名+类名
		String path = "net.ylj.reflection.bean.User";
		//获取class的三种方式
		Class clazz = Class.forName(path);
		Class clazz2 = User.class;
		Class clazz3 = path.getClass();
		
		//类名称
		System.out.println(clazz.getName());		// 包名+类名
		System.out.println(clazz.getSimpleName());	// 类名
		
		//属性
		Field [] public_field = clazz.getFields();	         //public修饰的属性
		Field [] all_field = clazz.getDeclaredFields(); //所有属性
		Field f0 = clazz.getDeclaredField("id");     //获取指定属性
		for(Field f : all_field){  // 或public_field
			System.out.println(f.getType() + " == " + f.getName()); // 类型  名称
		}
		
		//方法
		Method[] public_method = clazz.getMethods(); 	//public修饰的方法
		Method[] all_method = clazz.getDeclaredMethods(); 	//所有方法
		Method method = clazz.getDeclaredMethod("setId",int.class);	//获取指定方法,方法无参数时写 null
		
		//构造方法
		Constructor[] constructor = clazz.getConstructors(); //获取所有构造方法
		Constructor cc = clazz.getDeclaredConstructor(null); //获取无参构造方法
		//反射调用无参构造方法
		User user = (User) clazz.newInstance();
		//反射调用有参构造方法
		Constructor<User> c = clazz.getConstructor(int.class,String.class);
		User u = c.newInstance(12,"小明");
		
		//反射调用普通方法
		Method m = clazz.getDeclaredMethod("setName", String.class);
		m.invoke(u, "小红");	//like u.setName("小红");
		
		//反射,通过属性修改属性值
		Field field = clazz.getDeclaredField("name");
		field.setAccessible(true);	//设置该属性跳过安全检查
		field.set(u, "小刚");	//like u.setName("小刚");
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值