您好,登錄后才能下訂單哦!
概念
JAVA中反射是動態(tài)獲取信息以及bai動態(tài)調(diào)用對象方法的du一種反射機制。Java反射就是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意方法和屬性;并且能改變它的屬性。而這也是Java被視為動態(tài)語言的一個關(guān)鍵性質(zhì)。Java反射的功能是在運行時判斷任意一個對象所屬的類,在運行時構(gòu)造任意一個類的對象,在運行時判斷任意一個類所具有的成員變量和方法,在運行時調(diào)用任意一個對象的方法,生成動態(tài)代理。
Java反射案例
寫一個"框架",不能改變該類的任何代碼的前提下,可以幫我們創(chuàng)建任意類的對象,并且執(zhí)行其中任意方法
className=Student methodName=sleep
代碼
import java.io.InputStream; import java.lang.reflect.Method; import java.util.Properties; /** * @author tanglei * @date 2020/6/11 3:10 下午 */ public class ReflectTest { public static void main(String[] args) throws Exception { Student s = new Student(); Properties pro = new Properties(); //獲取配置文件的路徑 ClassLoader classLoader = ReflectTest.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("pro.properties"); pro.load(is); String className = pro.getProperty("className"); String methodName = pro.getProperty("methodName"); //加載類進內(nèi)存 Class cla = Class.forName(className); Object obj = cla.newInstance(); //加載方法進內(nèi)存 Method method = cla.getMethod(methodName); method.invoke(obj); } }
以上就是Java反射案例(不要錯過)的詳細內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。