class Scratch {
public void meth1(){
}
public void meth2(){
}
public void meth3(){
}
public void meth4(){
}
public void meth5(){
}
public static void main(String[] args) {
int randomNumber=(int)Math.random()*5;
}
}
这里有5种方法,我想随机调用它们。我是OOP的新手,但对C有所了解,在这种情况下,我会将函数的地址存储在数组中,生成一个介于[0,4]之间的随机数,然后使用随机顺序。但是在Java中,我不知道如何获取方法的内存地址。我该怎么办?
int randomNumber=(int)Math.random()*5;
Method method = Scratch.class.getDeclaredMethod("meth" + randomNumber);
method.invoke();
使用反射。您可以将其放入循环中以随机调用方法。
有关反射的更多信息here。
这有点乏味,但是您可以为方法设置一定范围。例如:
public static void main(String[] args) {
int rand=(int)Math.random()*5;
if(rand < 0.1) {
meth1();
} else if(rand < 0.2) {
meth2();
} else if(rand < 0.3) {
//etc...
}
}