鍍金池/ 教程/ Java/ Java 方法
Java 數(shù)組
Java 訪問器
Java 泛型
Java 方法
指南
Java 動態(tài)代理
Java 變量
Java 注解
Java 私有變量和私有方法
Java 動態(tài)類加載與重載
java 類
Java 構(gòu)造器

Java 方法

原文地址

作者: Jakob Jenkov 譯者:葉文海(yewenhai@gamil.com)

內(nèi)容索引

  1. 獲取 Method 對象
  2. 方法參數(shù)以及返回類型
  3. 通過 Method 對象調(diào)用方法

使用 Java 反射你可以在運行期檢查一個方法的信息以及在運行期調(diào)用這個方法,通過使用 java.lang.reflect.Method 類就可以實現(xiàn)上述功能。在本節(jié)會帶你深入了解 Method 對象的信息。

獲取 Method 對象

可以通過 Class 對象獲取 Method 對象,如下例:

Class aClass = ...//獲取Class對象
Method[] methods = aClass.getMethods();

返回的 Method 對象數(shù)組包含了指定類中聲明為公有的(public)的所有變量集合。

如果你知道你要調(diào)用方法的具體參數(shù)類型,你就可以直接通過參數(shù)類型來獲取指定的方法,下面這個例子中返回方法對象名稱是“doSomething”,他的方法參數(shù)是 String 類型:

Class  aClass = ...//獲取Class對象
Method method = aClass.getMethod("doSomething", new Class[]{String.class});

如果根據(jù)給定的方法名稱以及參數(shù)類型無法匹配到相應的方法,則會拋出 NoSuchMethodException。 如果你想要獲取的方法沒有參數(shù),那么在調(diào)用 getMethod()方法時第二個參數(shù)傳入 null 即可,就像這樣:

Class  aClass = ...//獲取Class對象
Method method = aClass.getMethod("doSomething", null);

方法參數(shù)以及返回類型

你可以獲取指定方法的方法參數(shù)是哪些:

Method method = ... //獲取Class對象
Class[] parameterTypes = method.getParameterTypes();

你可以獲取指定方法的返回類型:

Method method = ... //獲取Class對象
Class returnType = method.getReturnType();

通過 Method 對象調(diào)用方法

你可以通過如下方式來調(diào)用一個方法:

//獲取一個方法名為doSomesthing,參數(shù)類型為String的方法
Method method = MyObject.class.getMethod("doSomething", String.class);
Object returnValue = method.invoke(null, "parameter-value1");

傳入的 null 參數(shù)是你要調(diào)用方法的對象,如果是一個靜態(tài)方法調(diào)用的話則可以用 null 代替指定對象作為 invoke()的參數(shù),在上面這個例子中,如果 doSomething 不是靜態(tài)方法的話,你就要傳入有效的 MyObject 實例而不是 null。 Method.invoke(Object target, Object … parameters)方法的第二個參數(shù)是一個可變參數(shù)列表,但是你必須要傳入與你要調(diào)用方法的形參一一對應的實參。就像上個例子那樣,方法需要 String 類型的參數(shù),那我們必須要傳入一個字符串。

本文鏈接地址: Java Reflection(五):方法