【问题标题】:How can I make aa Array of pointers to functions in Java? [duplicate]如何在 Java 中创建一个指向函数的指针数组? [复制]
【发布时间】:2021-02-07 15:01:33
【问题描述】:

我有很多函数,想用数组来调用它们。 我知道如何在 c++ 中做到这一点,但不知道如何在 java 中做到这一点。 我的意图伪代码如下:

Array<function pointers> functionBook[100];
functionBook.add(function_0);
functionBook.add(function_1);
 .
 .
 .
functionBook.add(function_99);


void functionCaller(int i){
  functionBook[i](); // will call function_i()
}

【问题讨论】:

  • Java 没有函数指针。它有您可以使用的@FunctionalInterface。搜索一下。
  • 不要这样做,但您可以通过 JNI 使用内存地址调用函数。
  • @LppEdd 使用 Project Panama,您甚至不需要编写任何 JNI 代码。但是 Java 方法很复杂,因为它们没有固定地址。

标签: java function-pointers


【解决方案1】:

尝试使用 lambda 和函数式接口:

public static void main(String[] args) {

    List<Runnable> list = List.of(
            () -> System.out.println("first"),
            () -> System.out.println("second"),
            () -> System.out.println("third")
    );

    list.forEach(Runnable::run);

}

您可以使用任何其他接口,例如可以接受值的 Function,或创建自己的函数式接口。

【讨论】:

  • 我的错误,已编辑,谢谢
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 2021-07-02
  • 2020-03-26
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多