java獲取反射機(jī)制的3種方法總結(jié)
反射機(jī)制的概念:
指在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法,對(duì)于任意一個(gè)對(duì)象,都能調(diào)用它的任意一個(gè)方法.這種動(dòng)態(tài)獲取信息,以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能叫java語言的反射機(jī)制.
反射機(jī)制的應(yīng)用:
生成動(dòng)態(tài)代理,面向切片編程(在調(diào)用方法的前后各加棧幀).
反射機(jī)制的原理:
1 首先明確的概念: 一切皆對(duì)象----類也是對(duì)象.
2 然后知道類中的內(nèi)容 :modifier constructor field method.
3 其次明白加載: 當(dāng)Animal.class在硬盤中時(shí),是一個(gè)文件,當(dāng)載入到內(nèi)存中,可以認(rèn)為是一個(gè)對(duì)象,是java.lang.class的對(duì)象.
java 獲取反射常使用的三種方式:
1.通過new對(duì)象實(shí)現(xiàn)反射機(jī)制
2.通過路徑實(shí)現(xiàn)反射機(jī)制
3.通過類名實(shí)現(xiàn)反射機(jī)制
- 通過Object類的getClass方法來獲取
- 使用.class的方式
- 使用Class.forName方法
例子:
建立一個(gè)學(xué)生類:
public class Student { private int id; String name; protected boolean sex; public float score; }
獲取反射機(jī)制
public class Get { //獲取反射機(jī)制三種方式 public static void main(String[] args) throws ClassNotFoundException { //方式一(通過建立對(duì)象) Student stu = new Student(); Class classobj1 = stu.getClass(); System.out.println(classobj1.getName()); //方式二(所在通過路徑-相對(duì)路徑) Class classobj2 = Class.forName("fanshe.Student"); System.out.println(classobj2.getName()); //方式三(通過類名) Class classobj3 = Student.class; System.out.println(classobj3.getName()); } }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
淺談SpringBoot2.4 配置文件加載機(jī)制大變化
這篇文章主要介紹了淺談SpringBoot2.4 配置文件加載機(jī)制大變化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08JavaWeb項(xiàng)目實(shí)現(xiàn)文件上傳動(dòng)態(tài)顯示進(jìn)度實(shí)例
本篇文章主要介紹了JavaWeb項(xiàng)目實(shí)現(xiàn)文件上傳動(dòng)態(tài)顯示進(jìn)度實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04通過jenkins發(fā)布java項(xiàng)目到目標(biāo)主機(jī)上的詳細(xì)步驟
這篇文章主要介紹了通過jenkins發(fā)布java項(xiàng)目到目標(biāo)主機(jī)上的詳細(xì)步驟,發(fā)布java項(xiàng)目的步驟很簡(jiǎn)單,通過拉取代碼并打包,備份目標(biāo)服務(wù)器上已有的要發(fā)布項(xiàng)目,具體內(nèi)容詳情跟隨小編一起看看吧2021-10-10Springboot實(shí)現(xiàn)VNC的反向代理功能
這篇文章主要介紹了Springboot實(shí)現(xiàn)VNC的反向代理,搭建過程也很簡(jiǎn)單,通過注冊(cè)bean攔截指定URL路徑進(jìn)行自定義操作,具體實(shí)例代碼跟隨小編一起看看需要的朋友可以參考下2021-09-09java.sql.Date和java.util.Date的區(qū)別詳解
Java中有兩個(gè)Date類,一個(gè)是java.util.Date通常情況下用它獲取當(dāng)前時(shí)間或構(gòu)造時(shí)間,另一個(gè)是java.sql.Date是針對(duì)SQL語句使用的,它只包含日期而沒有時(shí)間部分,這篇文章主要給大家介紹了關(guān)于java.sql.Date和java.util.Date區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-03-03