0

在 CodeIgniter 中,当我转到 URIexample.com/index.php/blog/showitem/253时,它会加载控制器blog并执行方法showitem(253)

使用 Java 中的反射可以实现这样的事情吗?例如,我有一个方法loadController(String controllerName, String method, Objects args...),它使用正确的方法和可变数量的参数初始化正确的控制器。

我知道我可以从字符串初始化类,调用方法,但我被困在可变数量的参数上。这就是我现在拥有的:

public static void switchController(String controllerName, String methodName, Object ... args)
{
try {
    Class controller = Class.forName("director.controllers." + controllerName);
    Method method = controller.getDeclaredMethod(methodName, Object[].class);
    method.invoke(controller.newInstance(), args);

我想要的是我可以NewsController用这样的showOne(int id)方法加载:

switchController("NewsController", "showOne", 124);

这可能吗?如果可以,怎么做?

4

1 回答 1

1

来自方法的 JavaDoc

各个参数会自动展开以匹配原始形式参数,并且原始参数和引用参数都根据需要进行方法调用转换。

所以你应该能够将它包装在一个 Integer 对象周围并调用它。那应该行得通。

于 2013-10-16T19:17:35.207 回答