【譯】5. Java反射——方法


原文地址:http://tutorials.jenkov.com/java-reflection/methods.html

============================================================================================

     使用Java反射,你可以檢查類的方法並在運行時調用它們。這是通過Java類java.lang.reflect.Method做的。本將會比較詳細的講述Java的Method對象。下面是涵蓋的主題列表:

  1. Obtaining Method Objects (獲取Method對象)
  2. Method Parameters and Return Types (Method的參數和返回值類型)
  3. Instantiating Objects using Constructor Object (使用構造函數對象實例化對象)

============================================================================================

  • Obtaining Method Objects

     從Class對象中獲取Method對象。這里有個例子:

Class aClass = ...//obtain class object
Method[] methods = aClass.getMethods();

     數組Method[ ]將存儲類中聲明的每個public方法的Method實例。

   如果你知道你要訪問的方法的准確的參數類型,你可以這樣獲取方法而不是所有的方法。這個例子返回一個方法名叫doSomething的public的方法,在給定的類中指定了接受一個String類型的參數: 

Class  aClass = ...//obtain class object
Method method = aClass.getMethod("doSomething", new Class[]{String.class});

     如果沒有和給定參數相匹配的的方法,會拋出NoSuchMethodException異常。
     如果你嘗試去訪問的方法沒有參數,傳入null作為參數,像這樣:

Class  aClass = ...//obtain class object
Method method = aClass.getMethod("doSomething", null);

 

============================================================================================

  • Method Parameters and Return Types

     你可以像這樣讀取一個給定的方法所接收的參數:

Method method = ... // obtain method - see above
Class[] parameterTypes = method.getParameterTypes();

 

     你可以像這樣訪問一個方法的返回值類型:

 

Method method = ... // obtain method - see above
Class returnType = method.getReturnType();

 

============================================================================================

  • Invoking Methods using Method Object 

     你可以像這樣調用一個方法:

//get method that takes a String as argument
Method method = MyObject.class.getMethod("doSomething", String.class);
Object returnValue = method.invoke(null, "parameter-value1");

 

     參數null是你想要調用方法的對象。如果是靜態方法,你需要提供null作為參數而不是一個對象的實例。在這個例子里,如果doSomething(String.class)不是靜態的,你需要提供validMyObject作為實例而不是null。

     方法Method.invoke(Object target, Object … parameters)接受不定個數的參數, 但是你必須提供與你所調用的方法對應的每個參數。在這里,這個方法接受一個String類型的參數,所以必須提供一個String類型的參數。

 ========================================================================================

  • 目錄

 

 

 

  這是一個本教程到目前為止涵蓋的主題列表:     

 

 

 

  1. Java反射——引言
  2. Java反射——Class對象
  3. Java反射——構造函數
  4. Java反射——字段
  5. Java反射——方法
  6. Java反射——Getter和Setter
  7. Java反射——私有字段和私有方法
  8. Java反射——注解
  9. Java反射——泛型
  10. Java反射——數組
  11. Java反射——動態代理
  12. Java反射——類的動態加載和重新加載

 

 

 

(敬請期待下一篇翻譯)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM