您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)怎么在java中利用反射創(chuàng)建代碼,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
1.實(shí)例說明
new 一個(gè)對(duì)象是實(shí)例,可以把這個(gè)new出來的對(duì)象叫做實(shí)例,說白了就是這個(gè)new出來的“東西”,叫它對(duì)象也可以,叫它實(shí)例也可以,對(duì)象和實(shí)例在這個(gè)角度上來講是等價(jià)的。
2.創(chuàng)建空參的實(shí)例
使用Class對(duì)象的newInstance()方法來創(chuàng)建Class對(duì)象對(duì)應(yīng)類的實(shí)例。
//原始:new的時(shí)候,先根據(jù)被new的類的名稱找尋該類的字節(jié)碼文件,并加載進(jìn)內(nèi)存,
//并創(chuàng)建該字節(jié)碼文件對(duì)象,并接著創(chuàng)建該字節(jié)文件對(duì)應(yīng)的Person對(duì)象。
Person p = new Person(); //反射:找尋該類的名稱,并加載進(jìn)內(nèi)存,并產(chǎn)生Class對(duì)象 //在產(chǎn)生類的對(duì)象 Strint className = "com.example.hgx.Person"; Class clazz = Class.forName(className); Object obj = clazz.newInstance();
3.創(chuàng)建帶參數(shù)的實(shí)例
這時(shí)要通過Class對(duì)象獲取指定的Constructor對(duì)象,再調(diào)用Constructor對(duì)象的newInstance()方法來創(chuàng)建實(shí)例。
class Person { public String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } } //獲取Person類帶一個(gè)(String,int)參數(shù)的構(gòu)造器 Strint className = "com.example.hgx.Person"; Class clazz = Class.forName(className); Constructor constructor = clazz.getConstructor(String.class,int.class);
內(nèi)容擴(kuò)展:
反射定義
反射機(jī)制指的是程序在運(yùn)行時(shí)能夠獲取自身的信息。在java中,只要給定類的名字,那么就可以通過反射機(jī)制來獲得類的所有屬性和方法。
反射的作用
在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類。
在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法。
在運(yùn)行時(shí)任意調(diào)用一個(gè)對(duì)象的方法
在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象
看完上述內(nèi)容,你們對(duì)怎么在java中利用反射創(chuàng)建代碼有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。