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)
| 归档时间: |
|
| 查看次数: |
24157 次 |
| 最近记录: |