如何在JNI

时间:2016-03-29 16:44:45

标签: java android c++ lambda java-native-interface

我有一个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开发并不熟悉,所以我不确定我该怎么做。

1 个答案:

答案 0 :(得分:-2)

有你

1)链接头文件(c ++标准库)

2)#include

3)使用namespace std;

等?

如果您的JNI新手首先阅读了一些教程......