新聞中心
Java反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意方法和屬性,這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能稱為Java語言的反射機(jī)制。

Java反射機(jī)制主要提供了以下三種功能:
1、在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類;
2、在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象;
3、在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法。
下面將詳細(xì)介紹這三種功能的實(shí)現(xiàn)方法。
在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類
要獲取對(duì)象的類信息,可以使用getClass()方法。
Object obj = new String("Hello, World!");
Class> clazz = obj.getClass();
System.out.println(clazz); // 輸出:class java.lang.String
在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象
要構(gòu)造一個(gè)類的對(duì)象,首先需要獲取該類的Class對(duì)象,然后通過newInstance()方法創(chuàng)建對(duì)象。
try {
Class> clazz = Class.forName("java.lang.String");
Object obj = clazz.newInstance();
System.out.println(obj); // 輸出:null
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
注意:newInstance()方法已經(jīng)過時(shí),建議使用getDeclaredConstructor().newInstance()方法替代。
try {
Class> clazz = Class.forName("java.lang.String");
Object obj = clazz.getDeclaredConstructor().newInstance();
System.out.println(obj); // 輸出:null
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
e.printStackTrace();
}
在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法
要調(diào)用對(duì)象的方法,首先需要獲取該對(duì)象的Class對(duì)象,然后通過getMethod()方法獲取Method對(duì)象,最后通過invoke()方法調(diào)用方法。
try {
Class> clazz = Class.forName("java.lang.String");
Object obj = clazz.getDeclaredConstructor().newInstance();
Method method = clazz.getMethod("length");
Integer length = (Integer) method.invoke(obj);
System.out.println(length); // 輸出:0
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
e.printStackTrace();
}
Java反射機(jī)制是一種強(qiáng)大的工具,可以在運(yùn)行時(shí)動(dòng)態(tài)地獲取類的信息、創(chuàng)建對(duì)象和調(diào)用方法,反射操作相對(duì)復(fù)雜且效率較低,因此在實(shí)際開發(fā)中應(yīng)謹(jǐn)慎使用。
當(dāng)前標(biāo)題:java反射三種方法有哪些
當(dāng)前URL:http://www.dlmjj.cn/article/dpidpcg.html


咨詢
建站咨詢
