是否可以通过类的反射来调用方法?使用反射调用方法
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