反射

反射


一 创建对象


1)方法一 :

Class<?> c = Class.forName("com.westos.entity.Product"); // 得到类对象
Product p2 = (Product)c.newInstance();// 创建新的实例对象


2)方法二 :
 

 Class<?> c = Product.class;
Product p2 = (Product)c.newInstance();// 创建新的实例对象

 



二 获取方法


1. 获取多个方法
Method[] methods = c.getDeclaredMethods();// 得到这个类中所有声明的方法(不包括继承的) 公有私有都包括
Method[] methods = c.getMethods();// 得到本类以及继承的所有公共方法


2. 获取某个方法
Method getId = c.getMethod("getId");//不含参数
Method setId = c.getMethod("setId", int.class);//含参数(一个参数)
Method test = c.getMethod("test",int.class,String.class);//含多个参数

注意: 1)getMethod()只能获得公共访问方法
         2)Method getId = c.getDeclaredMethod("getId");
            getId.setAccessible(true);
            可以突破私有的限制

 

3. 调用方法
Product p =new Product();
1)无参数
p.setId(1);
getId.invoke(p);//  <==> p.getId()
2)有参数
setId.invoke(p,1);//  <==> p.setId(1)


4.获取类中的属性
1) 获取多个属性
Field[] fields = c.getDeclaredFields();// 得到本类所有的属性(公有,私有...)

2) 获取一个属性
Field name = c.getDeclaredField("name");
name.setAccessible(true); // 突破私有属性限制

3) 赋值
Product p = new Product();
name.set(p,"篮球"); //  <==> p.name ="篮球";

4) 获取值
System.out.println(name.get(p)); // <==>  System.out.println(p.name);

............................................................................................................................................................................................待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值