日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java Reflection(五):方法

發(fā)布時(shí)間:2024/6/18 java 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Reflection(五):方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自并發(fā)編程網(wǎng) – ifeve.com

內(nèi)容索引
獲取Method對象
方法參數(shù)以及返回類型
通過Method對象調(diào)用方法

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

?

獲取Method對象

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

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

返回的Method對象數(shù)組包含了指定類中聲明為公有的(public)的所有變量集合。
如果你知道你要調(diào)用方法的具體參數(shù)類型,你就可以直接通過參數(shù)類型來獲取指定的方法,下面這個(gè)例子中返回方法對象名稱是“doSomething”,他的方法參數(shù)是String類型:

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

如果根據(jù)給定的方法名稱以及參數(shù)類型無法匹配到相應(yīng)的方法,則會拋出NoSuchMethodException。
如果你想要獲取的方法沒有參數(shù),那么在調(diào)用getMethod()方法時(shí)第二個(gè)參數(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)用一個(gè)方法:

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

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

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

轉(zhuǎn)載于:https://www.cnblogs.com/rmsSpring/p/4615447.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Java Reflection(五):方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。