Java中的回调函数很简单。做法是定义一个只有一个方法m()的接口A,然后将类型为A的集合添加到您的World类中。然后,在World对象的某个时刻,您想要迭代A集合并在每个元素上调用方法m()。为了向您的World添加“回调函数”,您只需定义一个实现接口A的类,并将其放入World类中的A对象集合中。例如,
public interface CallbackFunction
{
public void execute(int a, int b);
}
public class World
{
List<CallbackFunction> callbackFunctions;
public void addCallback(CallbackFunction f)
{
callbackFunctions.add(f);
}
private void updateWorld()
{
for(CallbackFunction f : callbackFunctions)
{
f.execute(<some int>, <some int>);
}
}
}
然后要给你的世界添加一个功能:
world.addCallback(new CallbackFunction()
{
public void execute(int a, int b)
{
}
}
我把其余的工作交给你,但这应该能让你了解回调函数在Java中是如何实现的。
你不需要存储一般的回调函数集合,你可以将特定的回调函数与你的World类中的特定方法捆绑在一起。例如,你的World类可能有一个通过比较集合中的两个元素来排序的方法。为了确定一个对象应该放在另一个对象之前还是之后,你可以定义一个CallbackFunction接口,该接口具有一个方法,该方法接受两个事物(如整数)并返回一个值,指示哪个事物应该先放置。例如,
public interface CallbackForSorting
{
public int compare(int a, int b);
}
public class World
{
List<Integer> thingsToSort;
public void sortThings(CallbackForSorter sorter)
{
int result = sorter.compare(thingsToSort.get(i), thingsToSort.get(i+1));
if(result == 0)
if(result == -1)
if(result == 1)
}
}