反射机制就是可以把一个类,类的成员(属性、方法)当成一个对象来操作,也就是说,类,类的成员,我们在运行的时候可以动态的去操作它们。

所有的Java类都继承了Object类,在Object类中定义了一个getClass()方法,该方法返回一个类型为Class类型的对象实例,例如:Class textFieldC = textField.getClass();

利用Class类型的对象实例,可以访问该对象的textField对象的描述信息,可以访问的主要描述信息如表所示:

通过反射可访问的主要描述信息
组成部分 访问方法 返回值类型 说明
包路径 getPackage() Package对象 获得该类的存放路径
类名称 getName() String对象 获得该类的名称
继承类 getSuperClass() Class对象 获得该类的父类
实现接口 getInterfaces() Class型数组 获得该类实现的所有接口
构造方法

getConstructors()

getConstructor(Class<?>...parameterTypes)

getDeclaredConstructors()

getDeclaredConstructor(Class<?>...parameterTypes)

Constructor型数组

Constructor对象

Constructor型数组

Constructor对象

获得所有权限为public的构造方法

获得权限为public的指定构造方法

获得所有的构造方法,按声明顺序返回

获得指定构造方法

方法 

getMethods()

getMethod(String name, Class<?>...parameterTypes)

getDeclaredMethods()

getDeclaredMethod(String name, Class<?>...parameterTypes)

Method型数组

Method对象

Method型数组

Method对象

获得所有权限为public的方法,包含从父类继承的方法

获得权限为public的指定方法

获得所有方法,按声明顺序返回,不包含从父类继承的方法

获得指定方法

成员变量

getFields()

getField(String name)

getDeclaredFields()

getDeclaredField(String name)

Field型数组

Field对象

Field型数组

Field对象

获得所有权限为public的成员变量,包含从父类继承的成员变量

获得权限为public的指定成员变量

获得所有成员变量,按声明顺序返回,不包含从父类继承的成员变量

获得指定成员变量

内部类

getClasses()

getDeclaredClasses()

Class型数组

Class型数组

获得所有权限为public的内部类、

获得所有内部类

内部类的声明类 getDeclaringClass() Class对象 如果该类为内部类,则返回它的成员类,否则返回null

Java反射基础知识的更多相关文章

  1. java反射基础知识(五)反射应用实践

    详解Java反射各种应用   Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息.通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: Cl ...

  2. java反射基础知识(四)反射应用实践

    反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start. 在应用反射机制之前,首先我们先来看一下如何获取一个对象对应的 ...

  3. java反射基础知识(三)

    原文地址:http://tutorials.jenkov.com/java-reflection/index.html http://www.cnblogs.com/penghongwei/p/329 ...

  4. java反射基础知识(二)

    1. 了解 Java 中的反射 1.1 什么是 Java 的反射 Java 反射是可以让我们在运行时获取类的函数.属性.父类.接口等 Class 内部信息的机制.通过反射还可以让我们在运行期实例化对象 ...

  5. java反射基础知识(一)

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

  6. 什么才是java的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...

  7. Java 多线程——基础知识

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  8. java必备基础知识(一)

    学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...

  9. java部分基础知识整理----百度脑图版

    近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...

随机推荐

  1. 常用font-family

    微软雅黑: Microsoft YaHei 宋体:SimSun 黑体:SimHei 仿宋: FangSong 楷体:  KaiTi 隶书:LiSu 幼圆:YouYuan 华文细黑:STXihei 华文 ...

  2. 部署Redis4.x单机版及配置RDB和AOF持久化

    一.环境及软件 OS soft version  CentOS 7.5   redis-4.0.12(目前是4.x最新) 二.下载及编译Redis [root@localhost ~]# wget h ...

  3. 基于kettle的简单HTTP接口监控

        需求:监控系统中使用的所有http接口,要求简单,易用. 一般的思路也就是发送get/post请求,然后检查接口的响应结果. 如果写代码,要处理http请求,检查http响应,实现发邮件,写d ...

  4. expected_conditions模块提供了判断页面元素的16种方法

    1.title_is: 判断当前页面的title是否完全等于(==)预期字符串,返回布尔值2.title_contains : 判断当前页面的title是否包含预期字符串,返回布尔值3.presenc ...

  5. tp5邮件发送

    一.开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例) 1.登录163邮箱,在首页上找到“设置”. 2.选择开启的服务,一般都全选,POP3/SMTP/IM ...

  6. Spring使用Quartz定时调度Job无法Autowired注入Service的解决方案

    1)自定义JobFactory,通过spring的AutowireCapableBeanFactory进行注入,例如: public class MyJobFactory extends  org.s ...

  7. SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介、创建消息生产者、创建消息消费者、自定义消息通道、分组与持久化、设置 RoutingKey)

    1.概念:SpringCloudStream 2.具体内容 2.1.SpringCloudStream 简介 SpringCloudStream 就是使用了基于消息系统的微服务处理架构.对于消息系统而 ...

  8. mysql 数据插入时的问题

    问题:在实现json串插入到数据库的时候发现中文utf-8传入的.但到数据中的时候反斜杠\就不见了,导致后面显示的时候也不能正常显示. 解决方法:comment=comment.replace(&qu ...

  9. 1.PHP连接mysql

      1.使用mysqli_connect()函数连接到MySQL数据库: mysqli_connect()函数的格式如下: mysqli_connect('MySQL服务器地址','用户名','用户密 ...

  10. (ZT)算法杂货铺——k均值聚类(K-means)

    https://www.cnblogs.com/leoo2sk/category/273456.html 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先 ...