我想创建很多方法,我希望随机给用户一个。什么可能是实现这一目标的有效方法?我可以使用枚举吗?切换语句?
这是一个小例子。
private void giveAssignment() {
Random randomTask = new Random();
int assignments = 3;
assignments = randomTask.nextInt(assignments);
switch(assignments) {
case 0:
doSomething();
break;
case 1:
doSomethingElse();
break;
case 2:
doAnotherThing();
break;
}
}
private void doSomething() {
//
}
private void doSomethingElse() {
//
}
private void doAnotherThing() {
//
}
最佳答案
您可以将它们存储在 Runnable
的列表(或数组)中,您可以使用方法引用轻松填充它们:
private void giveAssignment() {
List<Runnable> methods = Arrays.asList(
this::doSomething,
this::doSomethingElse,
this::doAnotherThing);
int assignments = randomTask.nextInt(methods.size());
methods.get(assignments).run();
}
这似乎比使用开关更具可扩展性:将新方法添加到选项列表要容易得多。您甚至不一定需要实际定义方法;
List<Runnable> methods = Arrays.asList(
this::doSomething,
this::doSomethingElse,
this::doAnotherThing,
() -> { /* some other code to execute here */ }
);
关于java - 存储方法并随机调用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44220487/