Ter*_*ium 2 java methods pointers memory-address java-11
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这里我有5个方法,我想随机调用它们。我是 OOP 的新手,但对 C 有点了解,在这种情况下,我会将函数(方法)的地址存储在一个数组中,在 [0,4] 之间生成一个随机数并使用数组调用函数随机顺序。但是在Java中,我不知道如何获取方法的内存地址。我该怎么做?
您可以使用类型Runnable及其方法的“函数变量”来执行此操作Runnable#run。
Scratch s = new Scratch();
List<Runnable> methods = new ArrayList<>();
methods.add(s::meth1); // this is how you reference a method itself
methods.add(s::meth2);
...
methods.get(1).run(); // this is how you "tell" the Runnable to execute its code
Run Code Online (Sandbox Code Playgroud)
抽象方法run被您拥有的代码覆盖,因此这是调用您的方法的“参考”。在包中,java.util.function您可以找到许多可以在您的方法具有参数或/和返回值的情况下使用的类。
现在从列表中调用随机方法非常简单:
int randomNumber = new Random().nextInt(methods.size());
methods.get(randomNumber).run();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |