天天看點

java invoke 傳回類型_java.lang.reflect.Method.invoke()方法示例

java.lang.reflect.Method.invoke(Object obj, Object... args)方法使用指定的參數調用由此Method對象表示的底層方法,個别參數自動展開以比對原始形式參數,原始參考參數和參考參數都需要進行方法調用轉換。

聲明

以下是java.lang.reflect.Method.invoke(Object obj, Object... args)方法的聲明。

public Object invoke(Object obj, Object... args)

throws IllegalAccessException, IllegalArgumentException,

InvocationTargetException

參數

obj - 調用底層方法的對象。

args - 用于方法調用的參數。

傳回值

使用參數args将由對象表示的方法排程obj上的結果。

異常

IllegalAccessException - 如果此方法對象正在強制執行Java語言通路控制,并且底層方法無法通路。

IllegalArgumentException - 如果方法是一個執行個體方法,并且指定的對象參數不是聲明底層方法(或其子類或實作者)的類或接口的執行個體; 如果實際和正式參數的數量不同; 如果原始參數的解包轉換失敗; 或者如果在可能的展開之後,通過方法調用轉換,參數值不能轉換為相應的形式參數類型。

InvocationTargetException - 如果底層方法抛出異常。

NullPointerException - 如果指定的對象為空,并且該方法是執行個體方法。

ExceptionInInitializerError - 如果由此方法引發的初始化失敗。

以下示例顯示java.lang.reflect.Method.invoke(Object obj, Object...args)方法的用法。

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

public class MethodDemo {

public static void main(String[] args)

throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {

Method[] methods = SampleClass.class.getMethods();

SampleClass sampleObject = new SampleClass();

methods[1].invoke(sampleObject, "data");

System.out.println(methods[0].invoke(sampleObject));

}

}

class SampleClass {

private String sampleField;

public String getSampleField() {

return sampleField;

}

public void setSampleField(String sampleField) {

this.sampleField = sampleField;

}

}

讓我們編譯并運作上面的程式,這将産生以下結果 -

data

¥ 我要打賞

糾錯/補充

收藏

加QQ群啦,易百教程官方技術學習群

注意:建議每個人選自己的技術方向加群,同一個QQ最多限加 3 個群。