新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
java反射三種方法有哪些
Java反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意方法和屬性,這種動態(tài)獲取信息以及動態(tài)調(diào)用對象方法的功能稱為Java語言的反射機制。

Java反射機制主要提供了以下三種功能:
1、在運行時判斷任意一個對象所屬的類;
2、在運行時構(gòu)造任意一個類的對象;
3、在運行時調(diào)用任意一個對象的方法。
下面將詳細介紹這三種功能的實現(xiàn)方法。
在運行時判斷任意一個對象所屬的類
要獲取對象的類信息,可以使用getClass()方法。
Object obj = new String("Hello, World!");
Class> clazz = obj.getClass();
System.out.println(clazz); // 輸出:class java.lang.String
在運行時構(gòu)造任意一個類的對象
要構(gòu)造一個類的對象,首先需要獲取該類的Class對象,然后通過newInstance()方法創(chuàng)建對象。
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)過時,建議使用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();
}
在運行時調(diào)用任意一個對象的方法
要調(diào)用對象的方法,首先需要獲取該對象的Class對象,然后通過getMethod()方法獲取Method對象,最后通過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反射機制是一種強大的工具,可以在運行時動態(tài)地獲取類的信息、創(chuàng)建對象和調(diào)用方法,反射操作相對復雜且效率較低,因此在實際開發(fā)中應謹慎使用。
新聞名稱:java反射三種方法有哪些
本文地址:http://www.5511xx.com/article/dpidpcg.html


咨詢
建站咨詢
