【发布时间】:2016-03-29 16:44:44
【问题描述】:
我有一个 C++ 类,它的类成员如下:
class FilterPipeline{
std::vector<std::function<bool(Object&, Object&)> > filters;
public:
void addFilter(std::function<bool(Object&, Object&)> filter){
this->filters.push_back(filter);
}
bool eval(Object &o){
bool state = true;
for(int i=0; i<this->filters.size(); i++)
{
if(!this->filters[i]((*this), o))
{
state = false;
break;
}
}
return state;
}
}
在 Java 中,我希望能够将 lambda 表达式传递给 addFilter 方法并在最后调用 eval 方法进行评估。
@FunctionalInterface
public interface Filter{
public boolean test(Object o1, Object o2);
}
FilterPipeline p = new FilterPipline();
p.addFilter((o1, o2) -> {
boolean result;
// do something here
return result;
});
if(p.eval(new Object()){
// do something
}
在使用 JNI 时我应该如何实现这一点?我正在考虑使用功能接口,但我对 JNI 开发真的很陌生,所以我不太确定我应该在这里做什么。
【问题讨论】:
-
您需要提供更多详细信息。你打算如何在你的 Java 代码中使用这个类?
-
@Michael 刚刚更新了问题。
-
问:你不只使用一个漂亮、简单、C 风格的回调函数吗???
-
@paulsm4 因为我希望能够使用 lambda 表达式
-
信息还不够。你的 Java
FilterPipeline类是什么样的?它如何与原生代码交互?
标签: java android c++ lambda java-native-interface