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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中获得了方法名称的字符串,怎么样调用该方法

發布時間:2023/11/29 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中获得了方法名称的字符串,怎么样调用该方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題: Java中獲得了方法名稱的字符串,怎么樣調用該方法

如果我有以下兩個變量

Object obj; String methodName = "getName";

在不知道obj的類的情況下,我怎么樣才能調用該類的名叫methodName的方法呢?

這個方法被調用時不帶參數,并且返回的是一個字符串,這是一個Javabean的getter方法

回答一

java.lang.reflect.Method method; try {method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..); } catch (SecurityException e) { ... }catch (NoSuchMethodException e) { ... }

這里的參數由你需要的具體的方法(如果有幾個重載方法的話,如果沒有參數就只需要給出方法名)決定

然后你就可以這樣調用方法了

try {method.invoke(obj, arg1, arg2,...); } catch (IllegalArgumentException e) { ... }catch (IllegalAccessException e) { ... }catch (InvocationTargetException e) { ... }

再次聲明,如果你這個方法沒有參數,就忽略arg1,arg2.

回答二

通過反射實現方法的調用:

Class<?> c = Class.forName("class name"); Method method = c.getDeclaredMethod("method name", parameterTypes); method.invoke(objectToInvokeOn, params);

“class name” 是類名

objectToInvokeOn是調用其方法的對象類型

method name 是你想要調用的方法名

parameterTypes是一個聲明了方法接收參數的Class[]

params 是聲明了傳給參數的Object[]

回答三

這個方法可以這樣被調用??赡軙懈嗟倪x擇(查一下反射的APi吧),但是這個是最簡單的

import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;import org.junit.Assert; import org.junit.Test;public class ReflectionTest {private String methodName = "length";private String valueObject = "Some object";@Testpublic void testGetMethod() throws SecurityException, NoSuchMethodException, IllegalArgumentException,IllegalAccessException, InvocationTargetException {Method m = valueObject.getClass().getMethod(methodName, new Class[] {});Object ret = m.invoke(valueObject, new Object[] {});Assert.assertEquals(11, ret);}}

回答四

首先,請避免這種代碼的的順序。它真的是很差的并且也不安全。(請看第二版的Secure Coding Guidelines for the Java Programming Language的第六節)

文章翻譯自Stack Overflow:https://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the-method-name-as-a-string

總結

以上是生活随笔為你收集整理的Java中获得了方法名称的字符串,怎么样调用该方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。