摘要:使用反射可以檢視類的方法,并在運行時調用。獲得方法對象通過對象獲得。示例代碼如下數組擁有一個類定義的所有公共方法的實例。如果方法是靜態的,傳代替類實例。本例中,方法需要一個,所以必須提供一個類型的參數。
使用反射可以檢視類的方法,并在運行時調用。這是通過類java.lang.reflect.Method實現的。本文將深入介紹Method對象。
獲得方法對象Method通過Class對象獲得。示例代碼如下:
Class aClass = ...//obtain class object Method[] methods = aClass.getMethods();
Method[] 數組擁有一個類定義的所有公共方法的實例。
如果知道方法參數的精確類型,有比獲得所有方法更優的(獲得方法的方式)。本例中,名為doSomething的方法需要一個String類型的參數:
Class aClass = ...//obtain class object Method method = aClass.getMethod("doSomething", new Class[]{String.class});
如果沒有方法匹配給定的方法名和參數,如例子中的String.class,將拋出NoSuchMethodException。
如果你嘗試訪問沒有參數的方法,傳null代替參數數組,如下:
Class aClass = ...//obtain class object Method method = aClass.getMethod("doSomething", null);方法參數和返回值類型
你可以通過如下代碼獲得方法的參數類型列表:
Method method = ... // obtain method - see above Class[] parameterTypes = method.getParameterTypes();
訪問方法返回值的代碼如下:
Method method = ... // obtain method - see above Class returnType = method.getReturnType();使用方法對象調用方法
調用方法的代碼如下:
//get method that takes a String as argument Method method = MyObject.class.getMethod("doSomething", String.class); Object returnValue = method.invoke(null, "parameter-value1");
null參數是擁有你想調用方法的實例。如果方法是靜態的,傳null代替類實例。本例中,如果doSomething(String.class) 不是靜態的,必須傳有效的MyObject類的實例代替null。
Method.invoke(Object target, Object ... parameters)方法的參數是可變參,但你調用時必須保證型參、實參一一對應。本例中,方法需要一個String,所以必須提供一個String類型的參數。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77251.html
摘要:通過反射獲取帶參無返回值成員方法并使用設置安全檢查,訪問私有構造函數必須創建實例這種不行,注意和方法需要傳遞參數測試復制這個功能獲取私有方法,同樣注意和的區別賦予訪問權限調用方法。 反射 目錄介紹 1.反射概述 1.1 反射概述 1.2 獲取class文件對象的三種方式 1.3 反射常用的方法介紹 1.4 反射的定義 1.5 反射的組成 1.6 反射的作用有哪些 2.反射的...
摘要:反射使用類對象提供的基本元數據,能從類對象中找出方法或字段的名稱,然后獲取表示方法或字段的對象。常見的反射手段有反射和反射。以之前的反射為例其中指定了方法的返回類型,其實不止如此。 Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類 在運行時構造任意一個類的對象 在運行時判斷任意一個類所具有的成員變量和方法 在運行時調用任意一個對象的方法 生成動態代理 很多框架...
摘要:反射機制一結合官方通過編寫的反射教程,復習一下反射的知識。反射的概念反射是一種在運行時獲取以及修改應用行為的一種工具。因為反射需要動態的解析類的信息,相比于非反射使用的方式要慢。反射需要獲取一定的運行時權限,在特定的安全環境下不一定存在。 Java反射機制(一) 結合Oracle官方通過JDK8編寫的反射教程,復習一下反射的知識。結尾篇補一個小例子。 主要內容 這次博客的主要內容就是簡...
摘要:反射機制的應用實例在泛型為的中存放一個類型的對象。工廠模式可以參考現在我們利用反射機制實現工廠模式,可以在不修改工廠類的情況下添加任意多個子類。 學習交流群:669823128java 反射 定義 功能 示例概要:Java反射機制詳解| |目錄 1反射機制是什么 2反射機制能做什么 3反射機制的相關API 通過一個對象獲得完整的包名和類名 實例化Class類對象 獲取一個對象的父類與...
閱讀 2822·2023-04-26 02:00
閱讀 2780·2019-08-30 15:54
閱讀 871·2019-08-30 11:15
閱讀 1511·2019-08-29 15:31
閱讀 925·2019-08-29 14:12
閱讀 496·2019-08-29 13:08
閱讀 847·2019-08-27 10:51
閱讀 2715·2019-08-26 12:17