欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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