关于注解以及反射的理解(扩展关于类的加载过程)

关于注解:

注解:分为元注解,内置注解,自定义注解。

作用:不是程序本身,但是可以对程序作出解释。以及可以被其它程序读取。

其中元注解: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示例的几种方法:

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

    

  可以有Class对象的类型:

      

 

  

 关于Java内存的简单分析:

  

 

 

关于类的加载过程:

  

 

 

 

扩展:

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

  

 

 

  关于类加载器:

  1.类加载器的作用:

  

 

 

  2:类加载器的分类:

    启动类加载器:BootStrap ClassLoader 

    扩展类加载器:Extension ClassLoader

    应用程序加载器:Application Classloader

        其具体作用如下:

  

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

posted @ 2022-04-28 16:05  码农小白David  阅读(49)  评论(0)    收藏  举报