大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 利用Java反射獲取對象

利用Java反射獲取對象

更新時間:2020-10-26 17:44:09 來源:動力節點 瀏覽1351次

與傳統的通過new 來獲取對象的方式不同,利用Java反射獲取對象會先拿到Hero的“類對象”,然后通過類對象獲取“構造器對象”再通過構造器對象創建一個對象。這種獲取對象的方式相對來說更加安全,能夠利用Java反射的特性來獲取對象。


利用Java反射機制獲取對象的具體步驟如下:

1.獲取類對象 Class class = Class.forName("pojo.Hero");

2.獲取構造器對象 Constructor con = clazz.getConstructor(形參.class);

3 獲取對象 Hero hero =con.newInstance(實參);


上面是最簡單的獲取方法,當Hero的構造方法不是無參構造方法時,獲取構造器對象略有不同,見下面測試:

構造方法不同時,獲取構造器對象的方法

示例:

Hero類添加6種構造方法

//---------------構造方法-------------------

//(默認的構造方法)

Hero(String str){

System.out.println("(默認)的構造方法 s = " + str);

}

//無參構造方法

public Hero(){

System.out.println("調用了公有、無參構造方法執行了。。。");

}

//有一個參數的構造方法

public Hero(char name){

System.out.println("姓名:" + name);

}

//有多個參數的構造方法

public Hero(String name ,float hp){

System.out.println("姓名:"+name+"血量:"+ hp);

}

//受保護的構造方法

protected Hero(boolean n){

System.out.println("受保護的構造方法 n = " + n);

}

//私有構造方法

private Hero(float hp){

System.out.println("私有的構造方法 血量:"+ hp);

}

通過反射機制獲取對象:

package test;

public class ConstructorTest {

/*

* 通過Class對象可以獲取某個類中的:構造方法、成員變量、成員方法;并訪問成員;

*

* 1.獲取構造方法:

* 1).批量的方法:

* public Constructor[] getConstructors():所有"公有的"構造方法

public Constructor[] getDeclaredConstructors():獲取所有的構造方法(包括私有、受保護、默認、公有)

* 2).獲取單個的方法,并調用:

* public Constructor getConstructor(Class... parameterTypes):獲取單個的"公有的"構造方法:

* public Constructor getDeclaredConstructor(Class... parameterTypes):獲取"某個構造方法"可以是私有的,或受保護、默認、公有;

*


* 2.創建對象

* Constructor對象調用newInstance(Object... initargs)

*/

public static void main(String[] args) throws Exception {

//1.加載Class對象

Class clazz = Class.forName("pojo.Hero");

//2.獲取所有公有構造方法

System.out.println("**********************所有公有構造方法*********************************");

Constructor[] conArray = clazz.getConstructors();

for(Constructor c : conArray){

System.out.println(c);

}

System.out.println("************所有的構造方法(包括:私有、受保護、默認、公有)***************");

conArray = clazz.getDeclaredConstructors();

for(Constructor c : conArray){

System.out.println(c);

}

System.out.println("*****************獲取公有、無參的構造方法*******************************");

Constructor con = clazz.getConstructor(null);

//1>、因為是無參的構造方法所以類型是一個null,不寫也可以:這里需要的是一個參數的類型,切記是類型

//2>、返回的是描述這個無參構造函數的類對象。

System.out.println("con = " + con);

//調用構造方法

Object obj = con.newInstance();

System.out.println("******************獲取私有構造方法,并調用*******************************");

con = clazz.getDeclaredConstructor(float.class);

System.out.println(con);

//調用構造方法

con.setAccessible(true);//暴力訪問(忽略掉訪問修飾符)

obj = con.newInstance(100);

}

}

輸出:

**********************所有公有構造方法*********************************

public pojo.Hero(java.lang.String,float)

public pojo.Hero(char)

public pojo.Hero()

************所有的構造方法(包括:私有、受保護、默認、公有)***************

private pojo.Hero(float)

protected pojo.Hero(boolean)

public pojo.Hero(java.lang.String,float)

public pojo.Hero(char)

public pojo.Hero()

pojo.Hero(java.lang.String)

*****************獲取公有、無參的構造方法*******************************

con = public pojo.Hero()

調用了公有、無參構造方法執行了。。。

******************獲取私有構造方法,并調用*******************************

private pojo.Hero(float)

私有的構造方法 血量:100.0


綜上所述,我們能夠得出以下結論:

1.獲取構造器對象方法:

1).批量的方法:

public Constructor[] getConstructors():所有"公有的"構造方法

public Constructor[] getDeclaredConstructors():獲取所有的構造方法(包括私有、受保護、默認、公有)

2).獲取單個的方法:

public Constructor getConstructor(Class… parameterTypes): 獲取單個的"公有的"構造方法

public Constructor getDeclaredConstructor(Class…parameterTypes):獲取"某個構造方法"可以是私有的,或受保護、默認、公有;


以上就是關于利用Java反射機制來獲取對象的介紹,當然這只是Java反射機制的一個很小的用處,Java反射是Java中的一個重點內容,想要更深入學習Java反射機制的小伙伴可以觀看本站的Java基礎教程解鎖Java機制的更多精彩內容!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产aaaaaaa毛片 | 亚洲男人的天堂久久香蕉 | 国产综合久久 | 伦理不卡 | 综合激情婷婷 | 欧美日韩一区二区三区久久 | 国产亚洲欧美另类一区二区三区 | 国产成人综合精品一区 | 日韩毛片免费观看 | 4hu四虎最新免费地址 | 国产亚洲精aa在线观看香蕉 | 欧美午夜伦y4480私人影院 | 亚洲成人在线免费视频 | 成人国产精品一级毛片视频 | 狠狠干夜夜草 | 日韩不卡一级毛片免费 | 亚洲日产综合欧美一区二区 | 国产一区二区在线观看视频 | 狠狠做深爱婷婷久久一区 | 狠狠色噜噜狠狠狠狠888奇米 | 成人午夜网站 | 无遮挡一级毛片呦女视频 | 欧美一级毛片片免费孕妇 | 免费一级毛片在级播放 | 奇米影视在线 | 婷婷久久精品 | 伊人狼人综合网 | 逆天至尊免费看229集 | 成人在线午夜 | 四虎www成人影院 | 天天干天天干天天干天天 | 午夜精品久久久久久久99热 | 国产免费无遮挡精品视频 | 免费毛片a| 中文字幕11页 | 国产小视频国产精品 | 国产精品久久久久蜜芽 | 亚洲精品在线免费 | 日本日韩欧美 | 在线免费亚洲 | 日本在线精品 |