您当前的位置: 首页 >  止步前行 Java

Spring源码前奏——Java反射

止步前行 发布时间:2020-07-28 16:18:54 ,浏览量:4

一、引言

在日常的工作中,如果是做业务开发,反射机制这个知识点很少有机会用到,当然也就不会放在心上,但如果想去看一些框架的源码或者深入一点学习,如果对Java反射机制不是很了解,那就会一头雾水。

最近又想去再看一下Spring的源码,想起自己第一次看Spring源码时的那种痛苦,我觉得很有必要还是先学习一下反射。希望对你有所帮助~~

恩,书读百遍其义自见。

二、反射基础介绍

1、反射的原理

Java反射机制就是程序在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意方法和属性,这种动态获取信息以及动态调用对象的功能称为Java语言的反射机制。

粗略的理解:反射就是在程序运行时,能够动态的操作类的成员。

2、反射的相关类
类名用途
Class类代表类和接口
Field类代表类的属性
Method类代表类的方法
Constructor类代表类的构造方法
3、Class类

Class类是描述类的类。能理解吗?

(1)、Class这个类中提供类很多的方法。
方法用途
getClassLoader()获得类的加载器
getClasses()返回一个数组,数组中包含该类中所有公共(public)类和接口类的对象
getDeclaredClasses()返回一个数组,数组中包含该类中所有(public、private、default)类和接口类的对象
forName(String className)根据类名(包含包名)返回类的对象
getName()获得类的完整路径名字(包含包名)
newInstance()创建类的实例
getPackage()获得类的包
getSimpleName()获得类的名字
getSuperclass()获得当前类继承的父类的名字
getInterfaces()获得当前类实现的类或是接口
asSubclass(Class clazz)把传递的类的对象转换成代表其子类的对象
Cast把对象转换成代表类或是接口的对象
(2)、获取类中属性相关的方法
方法用途
getField(String name)获得某个公有(public)属性对象
getFields()获得所有公有(public)属性对象
getDeclaredField(String name)获得某个属性(public、private、default)对象
getDeclaredFields()获得所有属性(public、private、default)对象
(3)、获取类中注解的相关方法
方法用途
getAnnotation(Class annotationClass)返回该类中与参数类型匹配的公有(public)注解对象
getAnnotations()返回该类所有的公有(public)注解对象
getDeclaredAnnotation(Class annotationClass)返回该类中与参数类型匹配的所有(public、private、default)注解对象
getDeclaredAnnotations()返回该类所有(public、private、default)的注解对象
(4)、获取类中构造器相关的方法
方法用途
getConstructor(Class parameterTypes)获得该类中与参数类型匹配的公有(public)构造方法
getConstructors()获得该类的所有公有(public)构造方法
getDeclaredConstructor(Class parameterTypes)获得该类中与参数类型匹配的构造方法,包含私有
getDeclaredConstructors()获得该类所有(public、private、default)构造方法
(5)、获取类中方法的相关方法
方法用途
getMethod(String name, Class parameterTypes)获得该类某个公有(public)的方法
getMethods()获得该类所有公有(public)的方法
getDeclaredMethod(String name, Class parameterTypes)获得该类某个方法(public、private、default)
getDeclaredMethods()获得该类所有方法(public、private、default)
(6)、类中其他重要的方法
方法用途
isAnnotation()如果是注解类型则返回true
isAnnotationPresent(Class
关注
打赏
查看更多评论