Java 中的函数指针数组
我已经阅读了这个问题,但我仍然不确定是否可以在Java的数组中保留指向方法的指针。如果有人知道这是否可能(或不可能),那将是一个真正的帮助。我试图找到一个优雅的解决方案,保留一个列表和相关函数,而不写一堆数百个语句。String
if
干杯
我已经阅读了这个问题,但我仍然不确定是否可以在Java的数组中保留指向方法的指针。如果有人知道这是否可能(或不可能),那将是一个真正的帮助。我试图找到一个优雅的解决方案,保留一个列表和相关函数,而不写一堆数百个语句。String
if
干杯
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();
}
您可以使用函子模式获得相同的结果。例如,有一个抽象类:
abstract class Functor
{
public abstract void execute();
}
您的“函数”实际上是派生类中的执行方法。然后,创建一个函子数组,并使用专有的派生类填充它:
class DoSomething extends Functor
{
public void execute()
{
System.out.println("blah blah blah");
}
}
Functor [] myArray = new Functor[10];
myArray[5] = new DoSomething();
然后你可以调用:
myArray[5].execute();