反射注解知识点复习(第一次)

知识梳理

1、注解


1.1、基础常识

始于JDK1.5

可以使用在包、类、字段、方法、局部变量、方法参数等的前面


1.2、内置注解

  • @Override:用于重写超类的方法

    java.lang.Override包下

  • @Deprecated:用于标记过时的方法、属性或类

    java.lang.Deprecated包下

  • @SuppressWarnings():抑制警告信息。需要添加参数,一般为“all”、“unchecked”

    java.lang.SuppressWarnings包下


1.3、自定义注解

java.lang.annotation包下

  • @Target():被扫描的注解可以使用的地方,比如方法上、类上
  • @Retention():表示生命周期。不同参数生命周期的排序SOURCE < CLASS < RUNTIME
  • @Document:该注解将被包含在javadoc中
  • @Inherited:说明子类可以继承父类中的该注解




2、反射


2.1、反射概述

Java是静态语言,但是反射使得Java成了准动态语言

反射式java被视为动态语言的关键,反射机制允许程序在执行期间借助Reflection API获取任何类的内部信息,并能直接操作任意对象的内部属性及方法


2.2、获取Class实例的三种方式

  1. 对象名.getClass()
  2. 类名.class ==> 该方法最安全,性能最优
  3. 类名.forName(“全类名”) ==> 需要抛出异常

2.3、类加载的过程

当程序主动使用某个类的时候,如果该类还没有加载到内存中,则系统就会通过一下的三个步骤对类进行初始化:

  1. 类的加载:进行数据转换,并创建一个Class对象
  2. 类的链接:将类的为禁止数据合并到JRE中
  3. 类的初始化:JVM负责对类进行初始化

类加载器的作用是把用类class装载进内存的。

自定义类加载器 ==> 系统加载器 ==> 扩展类加载器 ==> 根加载器(使用C++语言,获取为null)

双亲委派机制:双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。



2.4、获取类对应的结构


1、类名

.getName():获取全类名

.getSimpleName():获取简单类名


2、属性

.getFields():获取类的public属性

.getDeclaredFields():获取类的所有属性

.getField(“属性”):获取类的public里面的指定属性

.getDeclaredField(“属性”):获取类的所有属性里面的指定属性


3、方法

.getMethods():获取本类及父类的的public方法

.getDeclaredMethods():获取本类的全部方法

.getMethod(“方法名”,“参数”):获取本类及父类的的public方法里面指定的方法

.getDeclaredMethod(“方法名”,“参数”):获取本类的全部方法里面指定的方法


4、构造器

.getConstructors():获取本类的public构造方法

.getDeclaredConstructors():获取本类的全部构造方法

注意:获取带参构造时,需要添加对应参数类型的.class


5、注意

获取构造方法时:
构造器对象.newInstance(参数)

通过反射获取普通方法时:
方法.invoke(对象,“参数列表”)


通过反射获取private内容时:

对象.setAccessible(true)
对象.set(对象,“参数列表”)

3、全章思维导图

发布了45 篇原创文章 · 获赞 17 · 访问量 3685

猜你喜欢

转载自blog.csdn.net/qq_44377709/article/details/105348647
今日推荐