反射

reflect 反射

  • 动态性,描述语言的动态,java是有一定动态性的语言。

    • 体现在可以在运行期探究和使用编译期未知的东西,包括类,构造,属性,方法等等。
  • 类加载:由类加载期完成,类的class文件被读入内存后,就会创建一个class对象,类的所有信息就会放入class对象中,同一个类只被载入一次。

  • 连接:把类的二进制数据合并到JRE中。
  • 初始化:JVM负责对类进行初始化,也就是对静态属性进行初始化。

一,反射产生对象

  • 1.获取class对象

    • 1.1根据实例对象获取class对象,
      • 实现方法:调用实例对象的getClass(),该方法来自object类
      • 动态性:无
      • 适用范围:只能适用引用数据类型
    • 1.2根据类型名获取Class对象
      • 实现方法:调用类型名.class
      • 适用范围:基本,引用,甚至包括void的
      • 动态性:无
    • 1.3根据类型的字符串名称获取对象(唯一一个可以配置)
      • 实现方法:调用class.forName(“类的限定名”)
      • 适用范围:只有类类型,包括接口
      • 动态性:有
  • 2.通过class对象探究这个类的信息

  • 2-1探究类的声明部分的信息
    • String packageName = stuClass.getPackage().getName();//得到全类名
    • System.out.println(“package”+packageName+”;”);
    • String className = stuClass.simpleName();//得到简单类名
    • int classMod = stuclass.getModifiers();//得到修饰符,返回的数字
  • 2-2探究属性
    • Field[] allpublicFields = stuClass.getFields();//得到所有公共属性
    • Field[] allFields = stuClass.get.DeclaredFields();//得到所有被申明的属性
  • 2-3探究构造
    • Constructor[] allPublicCons = stuClass.getConstructor();//得到所有的公共构造
    • Constructor[] allCons = stuClass.getDeclaredConstructor();
    • (class…)当数组用来做参数的时候,三个点的申明方式是语法糖,外部的调用者无须创建数组实参,内部的实现者,任然按数组的方式使用形参
  • 2-4探究方法

    • Method[] allPublicMethods = stuClass2.getMethods();//所有公开的方法
    • Method[] allMethods = stuClass2.getDeclaredMethods();//所有被申明的方法
    • try {
    • Method thePublicMethod = stuClass2.getMethod(“thst2”, int.class);//指定的公共的方法
    • Method theMethod = stuClass2.getDeclaredMethod(“test3”, int.class,String.class);
    • } catch (NoSuchMethodException e) {
    • e.printStackTrace();
    • } catch (SecurityException e) {
    • e.printStackTrace();
    • }
  • 3.操作从class中探究出的信息

二,通过反射探究类(属性,方法等)

三,在运行期探究使用任意方法,任意属性,任意构造,从而体会反射的动态性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值