Java反射的简单使用

一.反射是什么

  在运行状态中,对于任意一个类,都能知道这个类中的所有属性和方法。对于任意一个对象,都能调用它的任意一个方法和属性。这种动态获取的信息以及动态调用对象的方法的功能称为Java的反射机制。

  所以通俗地说,反射就是在运行时,只要知道要操作的类是什么,就可以获取类的完整构造和调用对应的方法。

二.反射的使用

  一般使用一个类,我们都是知道这个类,可以直接通过new创建对象来使用。

  而反射则是不知道这个类,不能用new创建对象的情况下,使用反射的API来调用该类的属性或方法。

  下面是一个简单的例子。

public class User {
    private String name;

   //get set...      
}
public class DemoApplication {
    public static void main(String[] args) throws Exception {

        //正常情况下,创建类来调用
        User user = new User();
        user.setName("jade");
        System.out.println("name:" + user.getName());

        //使用反射来调用
        Class cls = Class.forName("com.example.demo.model.User");
        Constructor userConstructor = cls.getConstructor();
        Object userObj = userConstructor.newInstance();
      
        Method setNameMethod = cls.getMethod("setName", String.class);
        setNameMethod.invoke(userObj,"sam");
        Method getNameMethod = cls.getMethod("getName");
        System.out.println("name:" + getNameMethod.invoke(userObj));

    }
}

  我们是通过反射使用set方法来传值,然后用反射使用get方法来获取值。上面运行的结果是:

name:jade
name:sam

  使用反射获取对象的步骤:

  1.获取类的Class实例对象。

Class cls = Class.forName("com.example.demo.model.User");

  2.根据Class对象获取Constructor对象。

Constructor userConstructor = cls.getConstructor();

  3.使用Constructor对象的newInstance方法获取反射类对象。

Object userObj = userConstructor.newInstance();

  调用对象中的方法步骤:

  1.获取方法的Method对象。

Method setNameMethod = cls.getMethod("setName", String.class);

  2.利用invoke调用方法。

setNameMethod.invoke(userObj,"sam");

  这样就是反射的基本使用方式。

  

原文地址:https://www.cnblogs.com/shadoll/p/14694512.html