Java反射機制應用實踐

來自:ZiWenXiejava

連接:https://www.ziwenxie.site/2017/03/22/java-reflection/設計模式

Java反射機制應用實踐

前言ui

    Java反射機制是一個很是強大的功能,在不少大型項目好比Spring, Mybatis中均可以看見反射的身影。經過反射機制咱們能夠在運行期間獲取對象的類型信息,利用這一特性咱們能夠實現工廠模式和代理模式等設計模式,同時也能夠解決Java泛型擦除等使人苦惱的問題。本文咱們就從實際應用的角度出發,來應用一下Java的反射機制。spa

反射基礎

p.s: 本文須要讀者對反射機制的API有必定程度的瞭解,若是以前沒有接觸過的話,建議先看一下官方文檔的Quick Start。設計

在應用反射機制以前,首先咱們先來看一下如何獲取一個對象對應的反射類Class,在Java中咱們有三種方法能夠獲取一個對象的反射類。代理

經過getClass方法

在Java中,每個Object都有一個getClass()方法,經過getClass方法咱們能夠獲取到這個對象對應的反射類:code

/**
 * 經過getClass獲取反射類
 * Created by zhangyhk on 2017/5/24.
 */
public class getClassTest {
    public static void main(String[] args) {
        Student s =new  Student();
        Class<?> c = s.getClass();

    }
}


經過forName方法對象

咱們也能夠調用Class類的靜態方法forName()文檔

/**
 * 經過forName方法獲取反射類
 * Created by zhangyhk on 2017/5/24.
 */
public class forNameTest {

    public static void main(String[] args) {
        try {
            Class<?> c = Class.forName("www.westinfo.reflect.Student");
            System.out.println(c);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}


使用.classget

或者咱們也能夠直接使用.class

 

Class<?> c = String.class;

獲取類型信息

相關文章
相關標籤/搜索