【Java 基础】反射

编译时vs运行时

  1. “编译时”是指,将java代码编译成class文件的时期,不涉及内存。
    “编译时类型”是指,编译时类型由声明该变量时使用的类型决定。

  2. “运行时”是指,java虚拟机执行class文件的时期,涉及内存。
    “运行时类型”是指,运行时类型由实际赋给该变量的对象决定。

  3. 动态绑定
    “编译时”调用的是声明类型的成员方法,“运行时”调用的是实际类型的成员方法。
    注意:调用引用类型的成员变量时,无论是“编译时”还是“运行时”都是调用的实际类型的成员变量

什么是反射?

在运行状态时,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和变量。

Class类

反射的运用

  1. 获取class的方式
    这里写图片描述
  2. 创建类对象
    这里写图片描述
  3. 调用类对象中方法或变量
    这里写图片描述

Android中反射的运用

  1. 通过原始的java反射机制的方式调用资源
    这里写图片描述
    这里写图片描述
    是不是很屌!!!

  2. Activity启动过程中Activity对象的创建
    在Activity启动类ActivityThread中是这样启动一个Activity:
    这里写图片描述
    其中mInstrumentation的newActivity是如何实现的呢?
    这里写图片描述

  3. Android中manifest文件加载、layout加载也是通过反射注入到java代码中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值