Java反射机制的原理和用途(什么是反射机制,有什么作用)

2024-09-18 11:20:05 :5

java反射机制的原理和用途(什么是反射机制,有什么作用)

“java反射机制的原理和用途”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看java反射机制的原理和用途(什么是反射机制,有什么作用)!

本文目录

什么是反射机制,有什么作用

1.反射机制定义反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改其本身状态或行为的一种能力。在Java环境中,反射机制允许程序在执行时获取某个类自身的定义信息,例如熟悉和方法等也可以实现动态创建类的对象、变更属性的内容或执行特定的方法的功能。从而使Java具有动态语言的特性,增强了程序的灵活性和可移植性。2.反射机制的作用Java反射机制主要用于实现以下功能。(1)在运行时判断任意一个对象所属的类型。(2)在运行时构造任意一个类的对象。(3)在运行时判断任意一个类所具有的成员变量和方法。(4)在运行时调用任意一个对象的方法,甚至可以调用private方法。注意:上述功能都是在运行时环境中,而不是在编译时环境中。3.Java反射机制API实现Java反射机制的API在Java.lang.reflect包下,具有以下几点。(1)Class类:代表一个类。(2)Filed类:代表类的成员变量。(3)Method类:代表类的方法。(4)Constructor类:代表类的构造方法。(5)Array类:提供了动态创建数组及访问数组元素的静态方法。该类中的所有方法都是静态的。4.应用示例(1)根据类名获取类中定义的所有属性和方法,实例代码如下: view plain copypackage day0105; import java.lang.reflect.Array; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Reflect { /** * *打印出String类所有的属性和方法 */ public void test1(){ Class c = String.class; Method methods = c.getMethods(); for(int i = 0;i《methods.length;i++){ System.out.println(methods.getName()); } Field fields = c.getFields(); for(Field f : fields){ System.out.println(f.getType()+":"+f.getName()); } } /** * 根据类名动态创建类的对象 * @throws Exception */ public void test2() throws Exception{ Class c = Class.forName("day0105.Student"); Student student = (Student)c.newInstance(); student.setName("java"); student.setId("1001"); student.show(); } /** * 根据类名和方法名,执行对象的方法 * @param student * @param method * @param value * @throws Exception */ public void test3(Student student,String method,String value) throws Exception{ String s1 = method.substring(0,1).toUpperCase(); String s2 = method.substring(1); String m = "set"+s1+s2; System.out.println(m); Class c = student.getClass(); Method set = c.getMethod(m,new Class{String.class}); set.invoke(student,new Object{value}); } /** * 动态创建数组对象,对数组元素复制和取值 */ public void test4(){ try{ Class cls = Class.forName("java.lang.String"); //创建一个String类型的数组,大小为10 Object arr = Array.newInstance(cls, 10); //在数组5索引的位置赋值 Array.set(arr, 5, "this is a test"); //获取数组5索引位置的值 String s = (String)Array.get(arr, 5); System.out.println(s); }catch(Throwable e){ System.out.println(e); } } } Student类的定义如下 view plain copypackage day0105; public class Student { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ System.out.println(id+":"+name); } } Java语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类的对象,无需提前硬编码目标类。这些特性使得反射特别适用于创建以普通方式与对象协作的库。反射在性能方面会有一定的损耗,用于字段和方法接入时反射要远慢于直接写代码。如果它作为程序运行中相对很少涉及的部分将不会造成影响,因为即使测试最坏情况下的计时图显示的反射操作也只耗用几微秒。

Java中的反射机制到底是干什么的有什么用

用过eclipse吧这些编程工具吧,比如你定义了一个类Dog,里面写了好多方法,这个时候,你输入Dog.的时候.后面是不是会出来那些方法给你选择啊。这就是反射机制的最常见的例子了。反射机制可以可以让你得到这个类里的各个属性和方法

关于java反射机制的原理和用途到此分享完毕,希望能帮助到您。

java反射机制的原理和用途(什么是反射机制,有什么作用)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.