申明:
内容来源于老师的课堂笔记,这只是我的整理以及一些额外补充。
十四、反射
了解点
- 概念
- 动态语言和静态语言
- 动态语言:程序运行时,允许改变程序自身的结构或变量类型,如:python、perl
- 静态语言:程序运行时,不允许改变程序自身的结构或变量类型,如:java、c、c#
- Java的反射机制
- Class是类对象,new是类的对象
- 动态语言和静态语言
- Java反射和封装比较
-
两者不矛盾
封装指的是哪些可以调用,哪些不能调用的问题(预先设置哪些可调,哪些不可调)
反射指的是能不能调的问题(在运行中要不要调用)
-
掌握点
- 类对象class的产生-类加载
- 类加载步骤
- 当java.exe命令执行时,会加载.class字节码文件到JVM中,这个过程就叫做类的加载(ClassLoader),类只加载一次,加载到JVM中的类叫运行时类,这个运行时的类就作为了一个具体的类对象(即Class类的一个实例),即一个Class类的实例对象(类对象)就表示加载到内存中的具体的一个运行时的类。
- ClassLoader类类别
- Java获取类加载器
- 类加载步骤
- class类对象的获取
- class类对象是在类加载时(第一步)中已经创建存放在内存中,故我们只需要获取,而不是创建可以通过如下四种方式对Class类对象进行获取
- class类对象可以对几乎所有类型进行类对象的创建
- class类对象中的API
- 获取类结构信息
- 反射包Method类
- 反射包:java.lang.reflect.*
- 反射包Field类
- 对象的获取
- 属性的设置与获取
- 私有属性的访问设置
- 反射包Constructor类
- 练习
- 封装一个方法,这个方法能够调用任意类下的任意方法