在Java中我想在for循环中调用一个方法
for(int i = 0; i < 5; i++ ){
myMethod.get + Integer.toString(i)(theValue);
}
调用的方法名为myMethod.get1,myMethod.get2,myMethod.get3 ...
可以这样做吗?
答案 0 :(得分:6)
原则上,这可以通过反思实现。但是,像这样的问题通常是您的程序设计糟糕的症状。最有可能的做法是将数据存储在数据结构中,例如List
或数组,这样可以通过索引或Map
来获取值。
答案 1 :(得分:1)
像这样封装你的处理逻辑
interface Worker {
void doWork(Object param);
}
class Test {
private HashMap<Integer, Worker> map = new HashMap<Integer, Worker>();
public Test() {
map.put(1, new Worker() {
@Override
public void doWork(Object param) {
// do something for 1
}
});
map.put(2, new Worker() {
@Override
public void doWork(Object param) {
// do something for 2
}
});
}
public void invoke(int id, Object param){
map.get(id).doWork(param);
}
}
答案 2 :(得分:0)
我认为这通常不是一个好主意,但您可以使用反射API:
Class有一个名为getMethod的方法,它接受一个字符串参数,方法的名称(也是参数类型的一些可选参数),然后你可以通过调用invoke
来调用它。
答案 3 :(得分:0)
答案 4 :(得分:0)
是的,您可以使用反射API。请参阅java.lang.reflect.Method类并使用其调用方法
答案 5 :(得分:0)
我认为你不应该使用不同的方法,我相信你正在为某些操作做,你应该为每个功能创建类。所有这些类都应该扩展一个公共类,或者更好的是实现一个接口。这个接口可以有一个方法get(),它将在每个clases中实现。
现在您需要创建这些对象的引用数组/列表。并在for循环中调用每个类的get()方法。
当然你可以使用反射。