方法如何在不返回结果的情况下修改对象?

时间:2015-04-20 13:51:04

标签: java opencv

当我使用opencv时,我意识到了一些事情。在使用java API的opencv中的某些方法中,该方法接受一个参数而不返回任何值,并且在运行该方法时,您会发现该方法的输出显示在传递给它的相同参数中。例如,

Mat mat = new Mat();

while(videoCap.grap()) {

videoCap.retriev(mat);
display(mat);

}

正如您在代码中看到的那样,方法retrieve()不返回任何值,但它以某种方式处理输入参数,然后,在调用retrieve()方法之后,该输入参数包含不同的值!

任何人都能解释一下java中的可能性吗?

1 个答案:

答案 0 :(得分:0)

修改作为参数传入的对象的状态没有什么不可能。当然不能修改不可变对象。

在Java中更常见的是返回一个新的修改对象,如果不清楚方法是否正在修改其参数,这可能是错误的来源。

public void modifyMap(Map<String, String> map) {
    map.put("object state", "modified!");
}