如需参考文档请点击下载:参考文档
什么是反射?为什么用反射?
反射是指在程序运行期通过一个字符串的“类名”,将这个类加载到程序中,并可以获取它内部的成员信息(成员属性、成员方法、构造方法),并且可以去调用这些成员。
Java的反射机制就是增加程序的灵活性,避免将程序写死在代码里.提高JVM的运行效率。
拓展一下JVM运行时的内存结构




什么时候创建Class对象
- 当程序运行后,第一次创建此类的对象时;
- 当程序运行后,调用该类的静态成员时;
创建Class对象的三种方式:
- Class.forName(全名限定的类名)
- 类名.getClass()
- 类名.class
如需参考jdk文档请点击下载:jdk1.8
什么时注解?注解的作用是什么?
注解是写在源码中,用于对源码进行标记的一种语法
注解的作用: - 给编译器看的,用来对下面的代码进行语法检查、编译
- 给JVM看的,告诉JVM怎样运行下面的代码
自定义注解的基本方式
public @interface myInno{}元注解
注解的注解 用来约束注解
- 可以约束:注解可以出现在什么位置:
例如:
@Target(ElementType.TYPE):可以出现在类、接口上;
@Target(ElementType.FIELD):可以出现在成员属性上;
@Target(ElementType.CONSTRUCTOR):可以出现在构造方法上;
@Target(ElementType.METHOD):可以出现在方法上;
@Target(ElementType.PARAMETER):可以出现在方法形参上;
@Target(ElementType.LOCAL_VARIABLE):可以出现在局部变量上 - 约束:注解的声明周期;
例如:
@Retention(RetentionPolicy.SOURCE):注解只能出现的源码中。
@Retention(RetentionPolicy.CLASS):注解可以出现在源码、class文件中
@Retention(RetentionPolicy.RUNTIME):注解可以出现源码、class 、运行时

WeChat - 微信公众号