一.什么是反射
反射是一種設(shè)計(jì)思想,怎樣的思想呢?
首先我們先說java是一種面向?qū)ο蟮恼Z(yǔ)言,由此衍生出"萬物皆對(duì)象"的說法.我們把一輛車看成一個(gè)對(duì)象,那么我們先定義一個(gè)Car類,然后實(shí)例化一個(gè)car對(duì)象,這種是比較形象的使用方式.那既然"萬物皆對(duì)象",我們定義的Car類是不是一種對(duì)象呢?是的,反射就是把Car類看成是一個(gè)對(duì)象,先定義了一個(gè)Class類,Car這個(gè)類就是Class的一個(gè)具體實(shí)例.
我們?cè)诔绦蛟O(shè)計(jì)中定義的所有類和接口都是這個(gè)Class類的實(shí)例,這種思想和概念就是反射.
二.反射有什么用
通過反射可以在程序運(yùn)行時(shí)獲得類和接口中定義的所有東西,包括字段,構(gòu)造器,方法
通過反射可以在程序運(yùn)行時(shí)創(chuàng)建對(duì)象,執(zhí)行方法,修改字段
注意:這里強(qiáng)調(diào)了"運(yùn)行時(shí)",Class類的實(shí)例表示正在運(yùn)行的Java應(yīng)用程序中的類和接口,而我們正是通過對(duì)Class實(shí)例的操作來完成相應(yīng)功能的.
三.反射怎么用
首先我們要得到Class的實(shí)例,有三種方式:
1.Class.forName("全限定名")
2.類.class
3.對(duì)象.getClass();
得到Class實(shí)例后我們就可以根據(jù)Class的API來使用其方法