Method的invoke()方法的使用
阿新 • • 發佈:2019-02-16
主要是為了類反射,這樣你可以在不知道具體的類的情況下,根據配置的字串去呼叫一個類的方法。在靈活程式設計的時候非常有用。
二、實現方法
public Object invoke(Object obj,Object... args)throws IllegalAccessException,IllegalArgumentException,InvocationTargetException
對帶有指定引數的指定物件呼叫由此 Method
物件表示的底層方法。個別引數被自動解包,以便與基本形參相匹配,基本引數和引用引數都隨需服從方法呼叫轉換。如果底層方法是靜態的,那麼可以忽略指定的 obj
如果底層方法所需的形引數為 0,則所提供的 args
陣列長度可以為 0 或 null。
如果底層方法是靜態的,並且尚未初始化宣告此方法的類,則會將其初始化。
如果方法正常完成,則將該方法返回的值返回給呼叫者;如果該值為基本型別,則首先適當地將其包裝在物件中。但是,如果該值的型別為一組基本型別,則陣列元素不 被包裝在物件中;換句話說,將返回基本型別的陣列。如果底層方法返回型別為 void,則該呼叫返回 null。
obj
- 從中呼叫底層方法的物件(簡單的說就是呼叫誰的方法用誰的物件)args
- 用於方法呼叫的引數 舉例如下:public class A { public void foo(String name){ System.out.println("Hello, " + name); } }
package com.deppon.tps.atom.analysts; import java.lang.reflect.Method; public class TestClassLoad { public static void main(String[] args) throws Exception { Class<A> clz = A.class; Object o = clz.newInstance(); Method m = clz.getMethod("foo", String.class); for (int i = 0; i < 16; i++) { m.invoke(o, Integer.toString(i)); } } }