java的反射机制

反射

反射机制在运行状态中:

对于任意一个类,都能够知道这个类的所有属性和方法
对于任意一个对象,都能够调用它的任意一个方法和属性

反射提供的功能:

1、在运行时判断任意一个对象所属的类;
2、在运行时构造任意一个类的对象;
3、在运行时判断任意一个类所具有的成员变量和方法;
4、在运行时调用任意一个对象的方法;
5、生成动态代理。

反射对象的获取

 ①Class.forName(“全类名”)
    此方法必须处理异常
 ②类名.class
 ③对象.getClass()

获取反射对象
使用:
1、class.全类名,有异常,必须处理异常

例如:
try {
    Class<?>  perClass1 = Class.forName("Exercise.Test.FanShe");
    System.out.println(perClass1);
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

2、类名.class

Class<?> perClass2 = FanShe.class;

3、对象.getclass()

FanShe fanShe = new FanShe();
Class<?> perClass3 =fanShe.getClass();

获取方法
1、公共的(①本类以及父类、接口的所有方法②符合访问修饰符的规律)

类名.getMethod();

2、本类的所有方法

类名. getDeclaredMethods();

3、获取所有实现的接口

类名. getInterfaces();

4、获取所有的父类

     类名.getSuperclass();

5、获取所有的构造方法

 类名. getConstructors();

获取属性
1、公共的(①本类以及父类、接口的所有方法②符合访问修饰符的规律)

类名. getFields();

2、本类的所有属性

 类名. getDeclaredFields();

3、拿到对象的id

类名. getDeclaredFields(“id”);

4、对拿到的对象的id,重新赋值,第一个为对象,第二个为属性

类名. getDeclaredFields(“id”).set(类名.newInstance(),1);
访问的是private修饰的id,但是private是私有的

5、如果因为访问修饰符限制造成的异常,可以通过 属性(方法).setAccessible(true) 修改所以要修改访问权限

类名. getDeclaredFields(“id”).setAccessible(true);

6、获取当前反射所代表类(接口)的对象(实例)

类名.newInstance();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值