一、注解
注解入门
1 | ◆Annotation是从JDK5.0开始引|入的新技术. |
内置注解
1 | ➢@Override:定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一 个方法声明. |
元注解
1 | ◆元注解的作用就是负责注解其他注解, Java定义了4个标准的meta -annotation类型,他们被用来 |
自定义注解
1 | ➢使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口 |
二、反射
Java反射机制概述
静态与动态语言
1 | 动态语言 |
Java Reflection
1 | ➢Reflection (反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借 |
1 | ➢加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有 |

Java反射机制提供的功能
➢在运行时判断任意一个对象所属的类
➢在运行时构造任意一个类的对象
➢在运行时判断任意一个类所具有的成员变量和方法
➢在运行时获取泛型信息
➢在运行时调用任意一个对象的成员变量和方法
➢在运行时处理注解
➢生成动态代理
➢……
Java反射的优点和缺点
1 | 优点: |
反射相关的主要api
➢java.lang.Class :代表-个类
➢java.lang.reftect.Method :代表类的方法
➢java.lang.reflect.Field :代表类的成员变量
➢java.lang.reflect.Constructor :代表类的构造器
➢……
Class类
1 | 在Object类中定义了以下的方法,此方法将被所有子类继承 |
1 | ➢以上的方法返回值的类型是一个Class类,此类是Java反射的源头,实际上所 |
理解Class类并获取Class实例
Class类
1 | 对象照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。 |
Class类的常用方法

获取Class类的实例
1 | a) 若已知具体的类, 通过类的class属性获取,该方法最为安全可靠,程序性能最高。 |
哪些类型可以有Class对象?
1 | ➢ class: 外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类。 |
类的加载与ClassLoader
Java内存分析

了解:类的加载过程
1 | 当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化。 |

类的加载与ClassLoader的理解
1 | ➢ 加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构, |
图解

什么时候会发生类初始化
1 | ➢ 类的主动引用(一定会发生类的初始化) |
类加载器的作用
1 | ➢ 类加载的作用: 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时 |

类加载器作用是用来把类(class)装载进内存的。JVM 规范定义了如下类型的类的加载器。

获取运行时类的完整结构
通过反射获取运行时类的完整结构Field
、Method
、Constructor
、Superclass
、Interface
、Annotation
➢ 实现的全部接口
➢ 所继承的父类
➢ 全部的构造器
➢ 全部的方法
➢ 全部的Field
➢ 注解
。。。
创建运行时类的对象
有了Class对象能做什么?
1 | ➢ 创建类的对象: 调用Class对象的newInstance()方法 |
调用运行时类的指定结构
调用指定的方法
1 | 通过反射,调用类中的方法,通过Method类完成。 |

1 | Object invoke(Object obj, Object ... args) |
setAccessible
1 | ➢ Method和Field、Constructor对象都有setAccessible()方法。 |
反射操作泛型
1 | ➢ Java采用泛型擦除的机制来引入泛型, Java中的泛型仅仅是给编译器javac使用的,确保数据 |
反射操作注解
getAnnotations
getAnnnotaion
练习:ORM
