當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Java 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- 如果此 Method 對象強製執行 Java 語言訪問控製並且底層方法不可訪問。

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

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

  • NullPointerException- 如果指定的對象為 null 並且該方法是實例方法。

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

示例

下麵的例子展示了 java.lang.reflect.Method.invoke(Object obj, Object... args) 方法的用法。

package com.tutorialspoint;

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

相關用法


注:本文由純淨天空篩選整理自 java.lang.reflect.Method.invoke() Method Example。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。