Java反射基础知识
反射机制就是可以把一个类,类的成员(属性、方法)当成一个对象来操作,也就是说,类,类的成员,我们在运行的时候可以动态的去操作它们。
所有的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反射基础知识的更多相关文章
- java反射基础知识(五)反射应用实践
详解Java反射各种应用 Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息.通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: Cl ...
- java反射基础知识(四)反射应用实践
反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start. 在应用反射机制之前,首先我们先来看一下如何获取一个对象对应的 ...
- java反射基础知识(三)
原文地址:http://tutorials.jenkov.com/java-reflection/index.html http://www.cnblogs.com/penghongwei/p/329 ...
- java反射基础知识(二)
1. 了解 Java 中的反射 1.1 什么是 Java 的反射 Java 反射是可以让我们在运行时获取类的函数.属性.父类.接口等 Class 内部信息的机制.通过反射还可以让我们在运行期实例化对象 ...
- java反射基础知识(一)
一.反射 反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...
- 什么才是java的基础知识?
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...
- Java 多线程——基础知识
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- java必备基础知识(一)
学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...
- java部分基础知识整理----百度脑图版
近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...
随机推荐
- 使用pgrouting进行最短路径搜索
PgRouting是基于开源空间数据库PostGIS用于网络分析的扩展模块,最初它被称作pgDijkstra,因为它只是利用Dijkstra算法实现最短路径搜索,之后慢慢添加了其他的路径分析算法 ...
- Markdown 简单语法
标题 文本前面加上 '#' 和一个空格 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 加粗 文本两侧加上 '**' 加粗文本 斜体 文本两侧加上 '*' 斜体文本 斜体加粗 文本两侧加上 ...
- 【安全测试自学】初探web安全处测试(三)
安全测试专家成长系列之-初探Web安全3.mp4 案例: 安全测试的前景: 总结讨论:
- JAVA REENTRANTLOCK、SEMAPHORE 的实现与 AQS 框架
引言 ReentrantLock是JDK提供的一个可重入互斥锁,所谓可重入就是同一个锁允许被已经获得该锁的线程重新获得.可重入锁的好处可以在递归算法中使用锁,不可重入锁则导致无法在递归算法中使用锁.因 ...
- 【Python】itchat
错误:http://bbs.51cto.com/thread-1501477-1.html 解决方法降低certifi版本 >>> import itchat >>> ...
- 【Java基础】While循环详解
循环结构分两大类,一类是当型,一类是直到型. 当型: 当布尔值表达式条件为True时,反复执行某语句,当布尔表达式的值为False时才停止循环,例如:while 与 for循环. 直到型: 先执行某语 ...
- C#通过COM组件调用IDL的pro程序
如果在“COM_IDL_connectLib.COM_IDL_connect oComIDL = new COM_IDL_connectLib.COM_IDL_connect();”步骤提示“...8 ...
- 201772020113 李清华《面向对象程序设计(java)》第16周学习总结
1.实验目的与要求 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程的优先级属性及调度方法: (4) 掌握线程同步的概念及实现技术: 2.实验内容和步骤 实验1:测试程 ...
- ImportError: No module named managers
代码: import os import cPickle as pickle filename = '../dftest.pkl' if(os.path.exists(filename)): w=op ...
- ubuntu搭建svn服务器并htpp访问版本库并svn与web同步
Ubuntu搭建SVN服务器多版本库 1 介绍 Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可 ...