Java中获得了方法名称的字符串,怎么样调用该方法
問(wèn)題: Java中獲得了方法名稱的字符串,怎么樣調(diào)用該方法
如果我有以下兩個(gè)變量
Object obj; String methodName = "getName";在不知道obj的類的情況下,我怎么樣才能調(diào)用該類的名叫methodName的方法呢?
這個(gè)方法被調(diào)用時(shí)不帶參數(shù),并且返回的是一個(gè)字符串,這是一個(gè)Javabean的getter方法
回答一
java.lang.reflect.Method method; try {method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..); } catch (SecurityException e) { ... }catch (NoSuchMethodException e) { ... }這里的參數(shù)由你需要的具體的方法(如果有幾個(gè)重載方法的話,如果沒(méi)有參數(shù)就只需要給出方法名)決定
然后你就可以這樣調(diào)用方法了
try {method.invoke(obj, arg1, arg2,...); } catch (IllegalArgumentException e) { ... }catch (IllegalAccessException e) { ... }catch (InvocationTargetException e) { ... }再次聲明,如果你這個(gè)方法沒(méi)有參數(shù),就忽略arg1,arg2.
回答二
通過(guò)反射實(shí)現(xiàn)方法的調(diào)用:
Class<?> c = Class.forName("class name"); Method method = c.getDeclaredMethod("method name", parameterTypes); method.invoke(objectToInvokeOn, params);“class name” 是類名
objectToInvokeOn是調(diào)用其方法的對(duì)象類型
method name 是你想要調(diào)用的方法名
parameterTypes是一個(gè)聲明了方法接收參數(shù)的Class[]
params 是聲明了傳給參數(shù)的Object[]
回答三
這個(gè)方法可以這樣被調(diào)用。可能會(huì)有更多的選擇(查一下反射的APi吧),但是這個(gè)是最簡(jiǎn)單的
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);}}回答四
首先,請(qǐng)避免這種代碼的的順序。它真的是很差的并且也不安全。(請(qǐng)看第二版的Secure Coding Guidelines for the Java Programming Language的第六節(jié))
文章翻譯自Stack Overflow:https://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the-method-name-as-a-string
總結(jié)
以上是生活随笔為你收集整理的Java中获得了方法名称的字符串,怎么样调用该方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到一只拔了毛的鸡预示什么
- 下一篇: 孕妇梦到小青蛇是什么意思