一、引言
在日常的工作中,如果是做业务开发,反射机制这个知识点很少有机会用到,当然也就不会放在心上,但如果想去看一些框架的源码或者深入一点学习,如果对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()如果是注解类型则返回trueisAnnotationPresent(Class关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?