Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让java lamba函数的成员与C++;lambda函数?_Java - Fatal编程技术网

如何让java lamba函数的成员与C++;lambda函数?

如何让java lamba函数的成员与C++;lambda函数?,java,Java,我想创建实现onAcquireNewFrame lambda函数的FrameAcquisitor实例,但我希望它有内部组件,就像C++: public interface FrameAcquirer { public ByteBuffer onAcquireNewFrame(); } 但是为了创建frameAcquisitorlambda函数,我应该这样做 public class FfmpegFrameAcquirer implements FrameAcquirer { i

我想创建实现onAcquireNewFrame lambda函数的
FrameAcquisitor
实例,但我希望它有内部组件,就像C++:

public interface FrameAcquirer {
    public ByteBuffer onAcquireNewFrame();
}
但是为了创建
frameAcquisitor
lambda函数,我应该这样做

public class FfmpegFrameAcquirer implements FrameAcquirer {
    int id;
    public FfmpegFrameAcquirer(int id) {
        this.id = id;
    }
    public ByteBuffer onAcquireNewFrame() {
        return onAcquireNewFrameFfmpeg(id);
    }
    public native ByteBuffer onAcquireNewFrameFfmpeg(int id);
}
没有地方可以使用其id启动我的
ffmpegframeAcquisitor

在C++中,我只做了< /P>
FrameAcquirer myFrameAcquirerFunction = () -> {return null;}

您没有使用
id
那么有什么意义呢?如果您要使用它,Java会隐式地为您捕获变量。@SotiriosDelimanolis我在使用它时
返回onAcquireNewFrameFfmpeg(id)我是说在你的lambda版本中。Lambda捕获在Java中是隐式的<代码>MyFrameAcquisitionFunction=()->ByteBuffer.allocate(id)
或您想用
id
执行的任何操作。
FrameAcquirer myFrameAcquirerFunction = [id](){return nullptr;}