java基础day24

Day24
一、反射(被称为框架的灵魂,在反射面前一切是裸体《简称什么都可以操作》)

1、反射就是将各个类每一部分封装成对象,(一切皆对象)Class对象
2、反射优点:可以修改正在运行的代码(热修复);所有框架的编写都是使用反射
3、三种方式获取Class对象:
(1)类名 对象名 = new 类名();Class Class对象名 = 对象名.getClass();《理解方式,不用》

  • 获取Class对象名就是为了获取类的对象,第一种方式就是反过来

(2)Class Class对象名 = 类名.class;《了解,不用》
(3)Class Class对象名 = Class.forName(String className)参数是具体的包名+类名《常用》

二、Class类(用于反射)

1、Class没有公共构造方法,是由jvm自动构建
2、获取构造器的方法:

  • public Constructor<?>[] getConstructors():获取所有的公有的构造;
  • public Constructor<?>[] getDeclaredConstructors():获取所有的构造,包含私有;
  • public Constructor getConstructor(Class<?>… parameterTypes):获取是一个公有的构造,参数是构造参数的数组,表示可以传入多个参数;
  • public Constructor getDeclaredConstructor(Class<?>… parameterTypes):获取私有的构造方法;
  • public T newInstance():表示实例化一个对象(Constructor类下也有,主要实例有参和私有构造);
1.带参数的的构造(或方法)传递的是==>(类型.class)  
2.public static void setAccessible( boolean flag):暴力反射,使私有的构造、方法和属性能够被使用  

3、获取方法的方法:

  • public Method[] getMethods():获取所有公有的方法(同时也会获取到父类公有的方法);
  • public Method[] getDeclaredMethods():获取所有的包括私有的方法(不包含父类的);
  • public Method getMethod(String name,Class<?>… parameterTypes):获取单个公有的方法,第一个参数是方法的名称 第二个参数是方法类型.class;
  • public Method getDeclaredMethod(String name,Class<?>… parameterTypes):获取私有的方法;
  • public Object invoke(Object obj,Object… args):调用Obj对象的方法,在Method类下的,第一个参数 是对象 ,第二个参数是方法的具体参数;
获取类的私有属性、方法和构造的方法都含有Declared单词,都要进行暴力反射;在得到构造和方法的时候传递的都是类型.class,只有调用的时候传递的才是具体的值  

4、获取属性的方法:

  • public Field[] getFields():获取所有公有的属性;
  • public Field[] getDeclaredFields():所有所有的属性(包含私有的);
  • public Field getField(String name):获取单个公有的属性,参数:属性的名称;
  • public Field getDeclaredField(String name):获取私有的属性;

5、Field类的方法:

  • 设置值:public void set(Object obj,Object value):第一个参数是对象,第二个参数是具体赋的值;
  • 取值: 第一种取值的方法Object obj = c2.newInstance(); Student student = (Student) obj;第二种取值的方法是:public Object get(Object obj):参数传递的是对象;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值