是否可以通過類的反射來調用方法?使用反射調用方法
class MyObject {
... //some methods
public void fce() {
//call another method of this object via reflection?
}
}
謝謝。
是否可以通過類的反射來調用方法?使用反射調用方法
class MyObject {
... //some methods
public void fce() {
//call another method of this object via reflection?
}
}
謝謝。
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Main
{
public static void main(final String[] argv)
{
final Main main;
main = new Main();
main.foo();
}
public void foo()
{
final Class clazz;
final Method method;
clazz = Main.class;
try
{
method = clazz.getDeclaredMethod("bar", String.class);
method.invoke(this, "foo");
}
catch(final NoSuchMethodException ex)
{
// handle it however you want
ex.printStackTrace();
}
catch(final IllegalAccessException ex)
{
// handle it however you want
ex.printStackTrace();
}
catch(final InvocationTargetException ex)
{
// handle it however you want
ex.printStackTrace();
}
}
private void bar(final String msg)
{
System.out.println("hello from: " + msg);
}
}
絕對:
import java.lang.reflect.*;
public class Test
{
public static void main(String args[]) throws Exception
{
Test test = new Test();
Method method = Test.class.getMethod("sayHello");
method.invoke(test);
}
public void sayHello()
{
System.out.println("Hello!");
}
}
如果你有問題,後一個具體的問題(最好是有短,但完整的程序,證明了問題),我們會嘗試把它整理出來。
你可以......但是可能有更好的方法來做你以後的事情(?)。要通過反射調用一個方法,你可以這樣做 -
class Test {
public void foo() {
// do something...
}
public void bar() {
Method method = getClass.getMethod("foo");
method.invoke(this);
}
}
如果你想調用的方法的參數那麼它略有不同 - 你需要在除了參數傳遞給invoke方法的對象調用它當你從類中獲得方法時,你需要指定一個參數類型的列表。即String.class等
不要創建空的Object數組。利用可變參數簽名:調用(測試) – erickson 2009-02-19 17:59:39