java - 存储方法并随机调用它们?

标签 java

我想创建很多方法,我希望随机给用户一个。什么可能是实现这一目标的有效方法?我可以使用枚举吗?切换语句?

这是一个小例子。

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/

相关文章:

java - eclipse中tomcat错误404

java - Selenium Webdriver JAVA - 无法从下拉菜单中选择选项(JAVA)

java - 如何在特定条件下停止 Gradle 或 Maven 构建

java - 在 Java 中将字符从扫描仪转换为十进制和十六进制

java - 将对象变量添加到数组

java - 如何更改 Hibernate Tools 反向工程 DAO 类的名称?

java - 如何旋转多边形?

java - 如何在Java中声明一个常量层次数据结构?

java:如何制作带有单选按钮和标签的可滚动面板?

java - 检查 JUnit 是否未引发异常