【问题标题】:Is it possible to put methods in arrays to be randomized?是否可以将方法放入随机数组中?
【发布时间】:2015-12-27 20:14:26
【问题描述】:

我正在使用 Java,想知道是否可以将方法作为元素直接放入数组中。比如:

...[] arrayName = {herp(), derp(), jinkies()};

当我之前查看此内容时,有些人提到了“反射”,但我不知道这是什么(我对编程很陌生)。有没有一种简单的方法可以将方法放入数组中(我的目标是用 Random 随机地将它们吐出,并最终在每个名为“quit”之类的方法中以 String 参数终止)?如果不是,反射如何在这种情况下工作(如果有的话)?

我不仅仅是在问反射是什么。我的确切(主要)问题是“是否可以将方法放入数组中”,如果可以,那是如何完成的? 它的语法是什么?

感谢您的宝贵时间

【问题讨论】:

标签: java arrays methods


【解决方案1】:

在java中不可能将函数分配为对象。
但是您仍然可以为此使用 lambda 表达式或类似的结构。这实际上不会分配功能,但您可以像使用它一样使用它。

创建功能接口

@FunctionalInterface
interface MyFunction {
    public void fun();
}

使用 lambda 表达式来初始化该功能接口的数组

MyFunction[] functions = new MyFunction[]{
    () -> System.out.println("I am herp"),
    () -> {
        int a = 2;
        int b = 3;
        System.out.println(a + b);
    }
};

像函数数组一样使用数组。

functions[0].fun();

【讨论】:

  • 或者在这种情况下,使用Runnable作为你的功能接口。
  • “->”是语法的一部分吗?我以前从未见过。
  • @Ray25Lee 是 lambda 表达式,Java 8 自带
【解决方案2】:

您可以为每个方法创建一个类并创建一个类数组。 也为了更容易使用内部类,它会更具可读性。

(当然每个类都会共享同一个接口)

【讨论】:

  • 为什么使用“内部类”会更容易(我不确定那是什么)?另外,类数组的语法是“class[] arrayName”等吗?
猜你喜欢
  • 2021-08-03
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
相关资源
最近更新 更多