我想做的是用字符串变量调用方法/对象。
我有 ' foo
' 和 ' bar
' 需要做foo.bar()
有没有类似 PHP 的东西call_user_func()
?还有其他建议吗?
它在 Java 中称为反射:有关详细信息,请参阅本教程。
foo fooObject = new foo(); //not using reflection, but you can if you need to
//use reflection on your class()not object to get the method
Method method = foo.class.getMethod("bar", null);
//Invoke the method on your object(not class)
Object bar = method.invoke(fooObject, null);
UpperCase
附带说明:您的班级名称应以eg开头Foo
。
在java中你应该使用反射。
官方文档:http ://docs.oracle.com/javase/tutorial/reflect/index.html
您的情况可能如下所示:
Class<?> c = Class.forName("foo");
Method method = c.getDeclaredMethod ("bar", new Class [0] );
method.invoke (objectToInvokeOn, new Object[0]);
objectToInvokeOn
您要调用的实例/对象(类 foo)在哪里。如果你有它。
否则你应该去:
Class<?> c = Class.forName("foo");
Object objectToInvokeOn = c.newInstance();
Method method = c.getDeclaredMethod ("bar", new Class [0] );
method.invoke (objectToInvokeOn, new Object[0]);
如果您有该类实现的接口,那么您可以创建一个具有通用方法处理的代理类。但这比反思更具体。