Java中的函数指针数组

Wal*_*tzy 14 java arrays pointers function

我已经阅读了这个问题,我仍然不知道是否有可能继续指向方法Java中的数组,如果任何人知道,如果这是可能的,或者不是这将是一个真正的帮助.我正试图找到一个优雅的解决方案,保持一个字符串列表和相关的功能,而不会写出数百个'if'的混乱.

干杯

cle*_*tus 27

Java本身没有函数指针(或C#用语中的"委托").这类事情往往是使用匿名子类完成的.

public interface Worker {
  void work();
}

class A {
  void foo() { System.out.println("A"); }
}

class B {
  void bar() { System.out.println("B"); }
}

A a = new A();
B b = new B();

Worker[] workers = new Worker[] {
  new Worker() { public void work() { a.foo(); } },
  new Worker() { public void work() { b.bar(); } }
};

for (Worker worker : workers) {
  worker.work();
}
Run Code Online (Sandbox Code Playgroud)


Fab*_*llo 12

您可以使用仿函数模式获得相同的结果.例如,有一个抽象类:

abstract class Functor
{
  public abstract void execute();
}
Run Code Online (Sandbox Code Playgroud)

您的"函数"实际上是派生类中的execute方法.然后你创建一个仿函数数组并用适当的派生类填充它:

class DoSomething extends Functor
{
  public void execute()
  {
    System.out.println("blah blah blah");
  }
}

Functor [] myArray = new Functor[10];
myArray[5] = new DoSomething();
Run Code Online (Sandbox Code Playgroud)

然后你可以调用:

myArray[5].execute();
Run Code Online (Sandbox Code Playgroud)

  • "告诉我我的意思,而不是我要求的"谢谢. (5认同)