天天看點

Java Reflection(五):方法

原文位址 作者: jakob jenkov 譯者:葉文海([email protected]

内容索引

擷取method對象

方法參數以及傳回類型

通過method對象調用方法

使用java反射你可以在運作期檢查一個方法的資訊以及在運作期調用這個方法,通過使用java.lang.reflect.method類就可以實作上述功能。在本節會帶你深入了解method對象的資訊。

可以通過class對象擷取method對象,如下例:

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

如果你知道你要調用方法的具體參數類型,你就可以直接通過參數類型來擷取指定的方法,下面這個例子中傳回方法對象名稱是“dosomething”,他的方法參數是string類型:

如果根據給定的方法名稱以及參數類型無法比對到相應的方法,則會抛出nosuchmethodexception。

如果你想要擷取的方法沒有參數,那麼在調用getmethod()方法時第二個參數傳入null即可,就像這樣:

你可以擷取指定方法的方法參數是哪些:

你可以擷取指定方法的傳回類型:

你可以通過如下方式來調用一個方法:

傳入的null參數是你要調用方法的對象,如果是一個靜态方法調用的話則可以用null代替指定對象作為invoke()的參數,在上面這個例子中,如果dosomething不是靜态方法的話,你就要傳入有效的myobject執行個體而不是null。

method.invoke(object target, object … parameters)方法的第二個參數是一個可變參數清單,但是你必須要傳入與你要調用方法的形參一一對應的實參。就像上個例子那樣,方法需要string類型的參數,那我們必須要傳入一個字元串。