JAVA反射机制的基本介绍极其简单用法
程序员文章站
2024-01-21 14:23:52
...
JAVA反射机制
JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于
任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能
称为java语言的反射机制。
特点:
1:反射机制极大的提高了程序的灵活性和扩展性,降低模块的耦合性,提高自身的适应能力。
2:通过反射机制可以让程序创建和控制任何类的对象,无需提前硬编码目标类。
3:使用反射机制能够在运行时构造一个类的对象、判断一个类所具有的成员变量和方法、调用一个对象的方法
4:反射机制是构建框架技术的基础所在,使用反射可以避免将代码写死在框架中。
原理
反射机制(Reflection)是Java提供的一项较为高级的功能,它提供了一种动态功能,而此功能的体现
在于通过反射机制相关的API就可以获取任何Java类的包括属性、方法、构造器、修饰符等信息。
元素不必在JⅧ运行时进行确定,反射可以使得它们在运行时动态地进行创建或调用
如何用?:
package zj4_6;
public class Student(){
public void printInfo(){
System.out.println("打印学生信息")
}
public void printAddress(String address){
System.out.println("hello,I come from "+ address);
}
}
<-- 主函数-->
package zj4_6;
public class InvokeMethod{
public static void main(String [] args) throws Exception{
try{
//第一种:通过ClassforName()的方式来获取class对象
//第二种:类名.class (如:Student.class)
//第三种:对象.class(如:Student student=new Student;student.getclass)
//动态加载类,获取当前类的class对象
Class Student =Class.forName("zj4_6.Student");
//获取Student 类名称为printinfo方法
Method methods1=student.getMethod("printInfo");
//通过实例化的对象,调用无参数的方法printInfo
methods1.invoke(student.newInstance());
//获取类名称中为printAddress 方法,String class 是参数类型
Method methods2=student.getMethod("printAddress",String.class);
//通过对象,调用有参数的方法,调用PrintAddress 方法,其中“HK”是方法传入的参数值
methods2.invoke(student.newInstance(),"HK")
} catch(ClassNotFoundException e){
e.printStackTrace();
}
}
}
//运行的结果是:hello,I come from HK
上一篇: 通俗易懂设计模式之状态模式
下一篇: 设计模式之工厂模式