关于注解以及反射的理解(扩展关于类的加载过程)
关于注解:
注解:分为元注解,内置注解,自定义注解。
作用:不是程序本身,但是可以对程序作出解释。以及可以被其它程序读取。
其中元注解:target:表明可以作用在 类上 方法上 字段上以及参数等(描述注解的使用范围)
Retention:表示作用在哪一个阶段 ;runtime,source,class(需要什么级别保存该注释信息,用于描述注解的生命周期)
document:是否生成Java类注解文档(是否包含在javadoc中)
Inherited:说明子类可以继承父类中的该注解
内置注解:
@override:定义在Java.long。Override中,此注解只使用与修饰方法,表示一个方法声明打算重写超类中的另一个方法声明。
@Deprecated:定义在Java.lang.Deprecated中,此注解可以用于修饰方法,属性,类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或者存在更好的选择。
@SuppressWarnings:定义在Java.lang.SuppressWarnings中,用来抑制编译时的警告信息,与前面两个注解有所不同,你需要添加一个参数才能正确使用,这些参数都是已经定义好了的,我们选择性的使用就好。
@SuppressWarnings(“all”)
@SuppressWarnings(“unchecked”)
@SuppressWarnings(value={“unchecked”,“deprecation”})
自定义注解:
即用户自写的注解。使用@Interface修饰的类(接口),包含参数,可使用defeat赋默认值。
关于反射:
概念:是Java被视为动态语言的关键(Java是一种准动态语言)。反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作人一对小的内部属性以及方法。
扩展:加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息,我们可以通过这个对象看到类的结构,
这个对象就像一面镜子,透过这个镜子看到累的结构所以我们形象的称之为:反射。
反射机制提供的功能:

关于Class类:

关于Class类常用的方法:

获取Class示例的几种方法:
- Class c1=Class.forName(“类的全类名”);
- Studen s=new Student ;Class c1= s.getClass();
- Class c1=Student.Class: 该方法最安全可靠,程序性能最高。
- 内置的基本数据类型可以直接用类名.Type来获取 。 例:Class c1=Integer.Type;
可以有Class对象的类型:

关于Java内存的简单分析:

关于类的加载过程:


扩展:
什么时候会发生类的初始化??

关于类加载器:
1.类加载器的作用:

2:类加载器的分类:
启动类加载器:BootStrap ClassLoader
扩展类加载器:Extension ClassLoader
应用程序加载器:Application Classloader
其具体作用如下:

明白了类的加载过程,对于反射理解起来就轻而易举啦!!!

浙公网安备 33010602011771号