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

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

利用Java反射獲取對象

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

與傳統的通過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機制的更多精彩內容!


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久cao在线观看视频 久re这里只有精品最新地址 | 一区二区不卡不卡一卡 | xoxo日本| 色妞ww精品视频7777 | avtt男人天堂 | 色综合天天综合网国产人 | 国产理论自拍 | 亚洲韩精品欧美一区二区三区 | 亚欧乱色视频大全 | 久久99亚洲精品久久 | 997在线观看视频国产 | 免费在线一区二区三区 | 国产免费一级高清淫曰本片 | 天堂网在线观看 | bt 另类 专区 欧美 制服 | 日本色吧 | 黄视频在线观看网站 | 亚洲悠悠色综合中文字幕 | 狠狠色丁香婷婷久久综合考虑 | 久久久久琪琪免费影院 | 亚州色拍拍拍 | 久久ww| 亚欧美| 国产精品天天干 | 视色视频在线 | 亚洲综合视频一区 | 立即播放免费毛片一级 | 国产美女午夜精品福利视频 | 亚洲欧美日韩一级特黄在线 | 九九热视频免费观看 | 久久99精品这里精品动漫6 | 国产亚洲精品一品区99热 | 一级成人a免费视频 | 成年人一级毛片 | 四虎综合九九色九九综合色 | 天天操天天拍 | 香蕉碰碰人人a久久动漫精品 | 欧美日韩国产一区二区三区欧 | 久久久久日韩精品无 | 高清国产精品久久久久 | 一级毛片欧美一级日韩黄 |