感谢@flexo,当自由函数作为参数传递给另一个函数时,我对简单的回调没有任何问题.
但假设C接口比较困难:
typedef struct { int id; const char* name; } Item; typedef struct { int value; Items_Callback callback; void *context; } Items_Call; typedef int (*Items_Callback)(const Item *item, void *context); int Items_create(const Item *item, Items_Call *call) { ... call->callback(item, call->context); ... }
我打算为这样的代码生成一些不错的Java包装器.我假设有结果
class Item { public int id; public String name; } class Items_Call { public int value; public Object context; public Interface callback; public void setInterface(Interface i){ callback=i; }; } public interface Interface { public int Items_Callback(Item item, Object context); } int Items_create(Item item, Items_Call call) { ... call.callback.Items_Callback(item, call.context); ... }
我意识到SWIG在生成纯Java接口方面存在一些问题,但我认为这不是主要问题.问题是我不知道如何将这种嵌套结构重新解释为可接受的Java代码.