1. 程式人生 > >Java反射之基礎概念

Java反射之基礎概念

ide 包名 void java 類名 super 運行 生成 over

0.實例準備

package com.blueStarWei.invoke;

public class Student {
    private String name;
    
    public Student() { }

    public Student(String name) {
        super();
        this.name = name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        
return name; } @Override public String toString() { return "Student [name=" + name + "]"; } }

1. 什麽是反射

  反射是在運行時(非編譯時)動態獲取類型的信息(比如:接口信息、成員信息、方法信息等),然後根據這些獲取的信息創建對象、訪問修改成員、調用方法。

2. 獲取Class類的方式(3種):

//方式一:Class.forName("包名.類名")
Class stu1 = Class.forName("com.blueStarWei.invoke.Student");
//方式二:類名.class Class stu2 = Student.class; //方式三:實例.getClass() Class stu3 = new Student().getClass();

3. 創建實例對象

Student student = (Student) stu.newInstance();

備註:1)該方法通過無參構造的方式創建實例

2)New一個對象的時候,類可以沒有被加載;使用newInstance()方法的時候,必須保證這個類已經加載且已經連接【通過Class.forName()實現】。

Class clazz = Class.forName("com.blueStarWei.invoke.Student");
Student student1 
= (Student) clazz.newInstance(); //等價於 Student student2 = new Student();

4. 反射的作用

4.1 判斷任意一個對象所屬的類;

4.2 判斷任意一個類所具有的成員變量和方法;

4.3 調用任意對象的方法;

4.4 構造任意一個類的對象;

4.5 生成動態代理操作。

Java反射之基礎概念