1. 程式人生 > 其它 >Java反射的簡單使用

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");

  這樣就是反射的基本使用方式。