首页 / JAVA / Java 语言的反射机制
Java 语言的反射机制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 语言的反射机制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3079字,纯文字阅读大概需要5分钟。
内容图文
![Java 语言的反射机制](/upload/InfoBanner/zyjiaocheng/593/c7ef62184b5f409dba7e6627c2fd8ad1.jpg)
Java 反射是Java语言的一个很重要的特征,它使得Java具有了“动态性”。
Java提供了一套机制来动态获取类的信息以及动态调用对象的方法的功能,这套机制就叫——反射
反射机制是如今很多流行框架的实现基础,其中包括Struts、Spring、Hibernate等
在运行时判断任意一个对象所属的类。
在运行时构造任意一个类的对象。
在运行时判断任意一个类所具有的成员变量和方法。
在运行时调用任意一个对象的方法
Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Serializable),也包括fields和methods的所有信息,并可于运行时改变fields内容或调用methods
?那么通过Reflection所获取的信息从什么地方获取呢?
获取Class对象
对于每一个类在加载时都会有一个唯一的Class对象,Class对象中包含了所有需要动态获取的类的信息, 所以Class类是Reflection API 中的核心类 。
?获取Class对象的方法?
–obj.getClass();
–class属性
–Class.forName();
–ClassLoader
Reflection(API)
在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中:
–Class类:代表一个类。
–Field 类:代表类的成员变量(成员变量也称为类的属性)。
–Method类:代表类的方法。
–Modifier类:代表修饰符。
–Constructor 类:代表类的构造方法。
–Array类:提供了动态创建数组,以及访问数组的元素的静态方法。
Class中的常用方法(获得类的信息)
在Class对象的方法中,所有getXXX方法只能反射出public类型的成员,包括父类的public成员,所有getDeclaredXXX可以反射出类的所有成员(包括类的私有成员),但是只限于类本身的成员。
Class中的常用方法(获得类的构造方法)
getConstructors():获得类的所有的public类型的构造方法。
getDeclaredConstructors():获得类所有的构造方法
getConstructor(Class[] parameterTypes):获得类的特定public的构造方法,
parameterTypes 参数指定构造方法的参数类型。
getDeclaredConstructor(Class[] parameterTypes):获得类指定的所有的构造方法
Class中的常用方法(获得类的属性)
getFields():获得类的public类型的属性。
getDeclaredFields():获得类本身的所有属性
getField(String):获得指定名字的public类型的属性对象
getDeclaredField(String)获得类自己的指定名字的属性对象
Field类:
getModifiers():获得属性的修饰符(Modifier.toString(int)显示对应的修饰符类型)
getType() : 获得属性的类型
Class中的常用方法(获得类的方法)
getMethods():获得类的public类型的方法。
getDeclaredMethods():获得类的所有方法。
getMethod(String name, Class[] parameterTypes):获得类的特定public的方法,
name参数指定方法的名字,
parameterTypes 参数指定方法的参数类型。
getDeclaredMethod(String name, Class[] parameterTypes)
Method类:
getParameterTypes() :获得方法的所有参数类型
getReturnType():获得方法的返回值类型
反射动态调用类的成员
调用方法步骤:
–设定调用方法的参数列表(Class[])
–获得调用方法的对象(Method)
–设定调用方法的参数的值(Object[])
–普通方法:invoke(obj,values);
–构造方法:newInstance(values)
–
调用属性步骤:
–根据属性名字获得属性对象(Field)
–赋值:set(obj,value)
–取值:get(obj)
如果需要强制访问类的私有成员,则需要设定:
setAccessible(true);
总结
?Class是一个特殊的类,它的实例用来表示一个.class文件在内存中的存在形势。
?反射就是照镜子,照出类的内部结构。
?利用反射,可以在运行状态下初始化类。
内容总结
以上是互联网集市为您收集整理的Java 语言的反射机制全部内容,希望文章能够帮你解决Java 语言的反射机制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。