如何在Java中引用Method对象?

时间:2009-01-09 00:43:18

标签: java reflection methods

或者,换句话说,像 -

这样的问题
new Method[] {Vector.add(), Vector.remove()}

Eclipse一直告诉我我需要参数。但我显然不想调用这些方法,我只是想用它们作为对象!怎么办?

3 个答案:

答案 0 :(得分:6)

这是有效的,我不禁想知道,你在做什么呢?

new Method[] { 
  Vector.class.getMethod("add", Object.class), 
  Vector.class.getMethod("remove", Object.class) 
};

答案 1 :(得分:0)

首先,你在这里编写语法。我的javadocs中没有“Vector.add()”。

你可以这样做:


Method [] methods = Vector.class.getMethods();

但您无法执行这些方法。这里没有闭包或功能对象。

答案 2 :(得分:0)

有效:)

我正在使用它来实例化可变数量的“堆叠”循环(循环内循环内的循环)。

有一个静态方法可以传递起始索引,限制,使用Object来调用方法,最后是一组方法和一组参数。

编辑:粗糙的代码 - 花了我3分钟的时间来编写,所以潜在的东西可能非常糟糕,但我认为这个概念很明显。

public static void loop(int start, int lessThan, Object obj, Method[] methods, Object[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        lastLoop++;
        for(int i = start; i < lessThan; i++) {
            for(int j = 0; j < methods.length; j++) {
                methods[j].invoke(obj, args[j]);
            }
        }
    }

如果你想知道我正在使用这一切的东西 - 我只是在修补排列的方法,其中元素的数量少于位置的数量。我试图定义一个可变数量的循环(这取决于位置的数量)时遇到了问题,因此决定用它来规避它。