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