Java反射之基礎概念

0.實例準備ide

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. 什麼是反射this

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

 

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. 建立實例對象code

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

備註:1)該方法經過無參構造的方式建立實例對象

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

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

 

4. 反射的做用接口

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

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

  4.3 調用任意對象的方法;

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

  4.5 生成動態代理操做。

相關文章
相關標籤/搜索