java 反射之操作靜態Method
一張來自非洲的微笑,一首百聽不厭的老歌,還有每天穿梭在網路間的各位老鐵們,上節我們講了反射的Method,遺漏了點東西,在這裡將它補上,若我們利用反射呼叫靜態方法時又如何呢?
利用反射呼叫靜態方法
我們知道,靜態方法不屬於任何物件,只屬於類本身,直接上程式碼
程式碼示例 :
這是我定義的一個Person類,並定義一個靜態方法,我們來看測試程式碼:
測試程式碼:
以上是我們程式碼的測試和結果,最後一張截圖是API中method類中的invoke的官方解釋,允許我們將obj引數設定為null,前提是該方法是靜態方法。
接下來我們來看看利用反射呼叫陣列的可變引數,直接上程式碼:
程式碼如下:
class emp {
public static void work(int...arr){
System.out.println(Arrays.toString(arr));
}
public static void work(String ...arr) {
System.out.println(Arrays.toString(arr));
}
}
上述程式碼中,我們通過建立emp類,並建立了兩個靜態的可變引數的方法,來看測試程式碼:
程式碼如下:
利用反射呼叫陣列引數(可變引數)
public class StaticMethodDemo {
public static void main(String[] args)throws Exception {
若陣列為基本資料型別
Class<emp> clazz = emp.class;
Method method = clazz.getDeclaredMethod("work", int[].class);
method.invoke(null,new int[]{1,2,3,4,5});
若陣列為引用型別
Method method1 = clazz.getMethod("work", String[].class);
將它包裝成一個 Object[]陣列
method1.invoke(null,new Object[]{new String[]{"A","b","C"}});
}
結果如下:
這就是我們利用反射來操作靜態方法,以及陣列的可變引數基本過程。
相關文章
- Java代理之靜態代理Java
- c++ web框架實現之靜態反射實現C++Web框架反射
- method.invoke(...)反射點反射
- 基於NACOS和JAVA反射機制動態更新JAVA靜態常量非@Value註解Java反射
- java反射之動態代理學習筆記Java反射筆記
- Java 反射修改類的常量值、靜態變數值、屬性值Java反射變數
- Java靜態代理Java
- Java逆向基礎之靜態變數存取Java變數
- Java自學入門之靜態變數Java變數
- 反射--Class物件功能--獲取Method反射物件
- java 反射和動態代理Java反射
- PHP 反射之動態代理PHP反射
- JAVA 靜態代理 & 動態代理Java
- java反射之Class類Java反射
- JAVA特性 之 反射(Reflection)Java反射
- Java靜態代理模式Java模式
- 用反射呼叫Method類的invoke方法反射
- 靜態PDO基礎操作封裝封裝
- Java學習之反射篇Java反射
- Java之註解與反射Java反射
- Java中靜態跟非靜態的區別總結Java
- Java的方法靜態方法Java
- Java靜態程式碼塊Java
- Java動態代理和反射機制Java反射
- echarts之靜態與動態地圖Echarts地圖
- AOP之靜態代理VS動態代理
- Java高階語法之反射Java反射
- java靜態方法使用泛型Java泛型
- 深入理解 Java 反射和動態代理Java反射
- Java反射動態修改註解的值Java反射
- Java中的靜態代理和動態代理Java
- 輕鬆理解 Java 靜態代理/動態代理Java
- 靜態連結之深度解剖
- Java靜態變數在靜態方法內部無法改變值Java變數
- Java基礎之反射機制(續)Java反射
- JAVA基礎學習篇之反射Java反射
- 三. 重識Java之夯實反射Java反射
- java靜態程式碼檢測-pmdJava