使用反射获取属性、方法和赋值

使用反射获取属性、方法和赋值

public class clazz {
    public static void main(String[] args) throws Exception {
 		 Class<?> clazz = Class.forName("clazz.Dog");//这里填写你的实体类地址
 		 //通过Constructor的newInstance()方法创建对象
		 Object o3 = clazz.getDeclaredConstructor().newInstance();
		 //获取属性
		 Field name1 = clazz.getDeclaredField("name");
		 Field age1 = clazz.getDeclaredField("age");
		 //如果不是public修饰的可以取消属性的访问权限控制name1.setAccessible(true)
		 name1.setAccessible(true);
		 age1.setAccessible(true);
		 //给属性赋值
		 name1.set(o3, "苹果");
		 age1.set(o3, 12);
		// System.out.println(name1.get(o3));
		 //System.out.println(o3);
		
		 //获取方法
		 Method show1 = clazz.getMethod("show" );
		 //获取私有并且有参的方法
		 Method home = clazz.getDeclaredMethod("home", int.class, double.class);
		 //使用反射执行方法
		 show1.invoke(o3);
		 home.setAccessible(true);//因为是私有的
		 Object invoke = home.invoke(o3, 10, 20);
		 System.out.println("invoke = " + invoke);


    }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值