java语言的反射机制
反射:
在java运行环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?
这种动态获取类的信息以及动态调用对象的方法的功能来自于java语言的反射机制(Reflection)
反射机制的主要提供了以下功能
1、在运行时判断任意一个对象所属的类。
2、在运行时构造任意一个类的对象
3、在运行时判断任意一个类所具有的成员变量和方法
4、在运行时调用任意一个对象的方法
在JDK中,主要由以下类来实现java反射机制,在java.lang.reflect包中
class类:代表一个类
Field类:代表类的成员变量
Method类:代表类的方法
Constructor类:代表类的构造方法
Array类:提供了动态创建数组,以及访问数组的元素的静态方法
Object 类
getClass():返回此 Object 的运行时类。
类 Class
Class 类的实例表示正在运行的 Java 应用程序中的类和接口
String.class 的类型是 Class<String>。如果将被建模的类未知,则使用 Class<?>
常用方法:
forName(String className)方法:返回与带有给定字符串名的类或接口相关联的 Class 对象
newInstance()方法:创建此 Class 对象所表示的类的一个新实例。如同用一个带有一个空参数列表的 new 表达式实例化该类。如果该类尚未初始化,则初始化这个类。
getName() 方法:以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
getFields()方法:获得类的public类型的属性:
getMethods()方法:获得类的public类型的方法:
getMethod(String name,Class<?>... parameterTypes)方法:
获得类的特定的方法:
name 参数是一个 String,用于指定所需方法的简称。parameterTypes 参数是按声明顺序标识该方法形参类型的 Class 对象的一个数组。
Method 类;
Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息
invoke(Object obj,Object... args)方法:
对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null。
如果底层方法所需的形参数为 0,则所提供的 args 数组长度可以为 0 或 null。
setAccessible(boolean flag)方法:
将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
Field 类:
Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。
set() 方法:
将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
分享到:
相关推荐
在Java语言中,反射机制是通过JVM(Java虚拟机)逆向执行的过程来实现的。具体来说,反射机制允许在运行时动态创建类的实例,动态调用类的方法,以及访问和设置类的属性等。本文将深入探讨Java反射机制的原理及其在...
Java语言的反射机制是其强大的特性之一,它允许在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。这一机制对于理解和利用Java的灵活性至关重要,尤其在元编程、框架设计、插件系统以及...
这是因为Java反射机制不仅是Java语言的一项重要特性,也是理解Java动态特性的关键所在。通过本文,我们将深入探讨Java反射机制的核心概念、基本原理及其应用场景。 #### 二、Java反射机制简介 Java反射机制允许...
Java反射机制是Java语言的一个重要特性,它允许程序在运行时获取类的信息并操作对象。Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用类的方法等。通过反射,程序可以动态地创建对象和调用...
Java作为一种强大的编程语言,提供了许多高级特性,其中反射机制尤为突出。通过反射,开发者可以在运行时动态地获取类的信息并操纵类的行为,从而实现更加灵活和扩展性强的程序设计。 #### 二、Java中的类反射 ###...
JAVA反射机制是JAVA语言中的一种动态机制,它能够在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态调用对象的方法的...
此外,LEAD/LEAD++、OpenC++、MetaXa和OpenJava等编程语言都是基于反射机制构建的。 反射不仅限于编程语言领域,近年来也被广泛应用于视窗系统、操作系统以及文件系统中。尽管“反射”一词在计算机科学中有着全新的...
Java 1.5引入的反射机制是其动态性的一个重要体现,它允许程序在运行时检查和操作类、接口、对象及其方法。反射为开发者提供了强大的能力,可以在不知道具体类名的情况下实例化对象,调用方法,访问字段,以及处理...
Java语言的反射机制 Java语言的反射机制是Java语言中一个非常重要的机制,它允许程序在运行时加载、探知、使用编译期间完全未知的class。这种“看透class”的能力被称为introspection。反射机制的概念是由Smith在...
这是Java语言特有的功能,使得Java程序比其他语言(如C、C++)更加灵活。 ##### 2.1 Reflection的工作机制示例 下面通过一个简单的示例来展示Java反射机制的工作流程: ```java import java.lang.reflect.*; ...
Java反射机制是Java编程语言...总之,Java反射机制是Java语言中一个强大的工具,它增强了Java的灵活性,允许开发者在运行时探索和操作类的内部结构。尽管反射带来了诸多便利,但也需要合理使用,以平衡灵活性和稳定性。
反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以自我检查、自我调整。 在Java中,所有的类型都是`...
Java反射机制是Java语言的一种重要特性,使得Java成为了一种动态性很强的语言。通过反射,可以在程序运行时获取类的信息,包括类名、父类、接口、字段、方法等,并能够调用类的任意方法。这种能力对于构建高度灵活和...
### Java反射机制总结 ...总之,Java反射机制是Java语言的一个重要特性,它提供了在运行时动态获取类信息和操作类结构的能力。合理使用反射可以提高程序的灵活性和扩展性,但在使用时也需要考虑到其潜在的问题和限制。