或者,换句话说,像 -
这样的问题new Method[] {Vector.add(), Vector.remove()}
Eclipse一直告诉我我需要参数。但我显然不想调用这些方法,我只是想用它们作为对象!怎么办?
答案 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]);
}
}
}
如果你想知道我正在使用这一切的东西 - 我只是在修补排列的方法,其中元素的数量少于位置的数量。我试图定义一个可变数量的循环(这取决于位置的数量)时遇到了问题,因此决定用它来规避它。