1.注解
内置注解:
元注解:
自定义注解:
如何自定义注解?aof+反射。
上面是一个最简单的注解实现,没有定义任何的属性,其中需要注意的是@Retention(RetentionPolicy.RUNTIME)是定义注解所必须的。
用@Retention(RetentionPolicy.RUNTIME )修饰的注解,表示注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时。这就是反射的运用。
2.反射
反射的场景:
反射让Java变得动态。
反射默认使用无参构造初始化对象。
动态语言和静态语言:
1)机制:
2)例子:
Class.forname
3)Class类:
3.类加载内存分析
4.类初始化
5.类加载器
双亲委派机制:如果要定义一个java.lang.String,会先去Application Classloader,再去Extension,再去Bootstap根加载器。如果根里有,自己写的这个就没用了。保证安全性。
6.创建运行时类的对象
![](https://img-blog.csdnimg.cn/20201222185302787.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzc4MDE5,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20201222185334518.png)
7.动态创建对象执行方法
8.获取泛型信息
9.获取注解信息