当我使用opencv时,我意识到了一些事情。在使用java API的opencv中的某些方法中,该方法接受一个参数而不返回任何值,并且在运行该方法时,您会发现该方法的输出显示在传递给它的相同参数中。例如,
Mat mat = new Mat();
while(videoCap.grap()) {
videoCap.retriev(mat);
display(mat);
}
正如您在代码中看到的那样,方法retrieve()不返回任何值,但它以某种方式处理输入参数,然后,在调用retrieve()方法之后,该输入参数包含不同的值!
任何人都能解释一下java中的可能性吗?
答案 0 :(得分:0)
修改作为参数传入的对象的状态没有什么不可能。当然不能修改不可变对象。
在Java中更常见的是返回一个新的修改对象,如果不清楚方法是否正在修改其参数,这可能是错误的来源。
public void modifyMap(Map<String, String> map) {
map.put("object state", "modified!");
}