有 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() {
    //
}

共 (1) 个答案

  1. # 1 楼答案

    您可以将它们存储在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 */ }
    );