menu

反射注解

如需参考文档请点击下载:参考文档

什么是反射?为什么用反射?

反射是指在程序运行期通过一个字符串的“类名”,将这个类加载到程序中,并可以获取它内部的成员信息(成员属性、成员方法、构造方法),并且可以去调用这些成员。
Java的反射机制就是增加程序的灵活性,避免将程序写死在代码里.提高JVM的运行效率。

拓展一下JVM运行时的内存结构





什么时候创建Class对象
  1. 当程序运行后,第一次创建此类的对象时;
  2. 当程序运行后,调用该类的静态成员时;
    创建Class对象的三种方式:
  3. Class.forName(全名限定的类名)
  4. 类名.getClass()
  5. 类名.class
    如需参考jdk文档请点击下载:jdk1.8
    什么时注解?注解的作用是什么?

    注解是写在源码中,用于对源码进行标记的一种语法
    注解的作用:

  6. 给编译器看的,用来对下面的代码进行语法检查、编译
  7. 给JVM看的,告诉JVM怎样运行下面的代码

    自定义注解的基本方式

    public @interface myInno{}

    元注解

    注解的注解 用来约束注解

  8. 可以约束:注解可以出现在什么位置: 例如:
    @Target(ElementType.TYPE):可以出现在类、接口上;
    @Target(ElementType.FIELD):可以出现在成员属性上;
    @Target(ElementType.CONSTRUCTOR):可以出现在构造方法上;
    @Target(ElementType.METHOD):可以出现在方法上;
    @Target(ElementType.PARAMETER):可以出现在方法形参上;
    @Target(ElementType.LOCAL_VARIABLE):可以出现在局部变量上
  9. 约束:注解的声明周期;
    例如:
    @Retention(RetentionPolicy.SOURCE):注解只能出现的源码中。
    @Retention(RetentionPolicy.CLASS):注解可以出现在源码、class文件中
    @Retention(RetentionPolicy.RUNTIME):注解可以出现源码、class 、运行时