Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 方法如何修改对象而不返回结果?_Java_Opencv - Fatal编程技术网

Java 方法如何修改对象而不返回结果?

Java 方法如何修改对象而不返回结果?,java,opencv,Java,Opencv,当我使用opencv时,我意识到了一些事情。在opencv和JavaAPI中的某些方法中,该方法接受参数而不返回任何值,并且在运行该方法时,您会发现该方法的输出显示在传递给它的相同参数中。比如, Mat mat = new Mat(); while(videoCap.grap()) { videoCap.retriev(mat); display(mat); } 正如您在代码中看到的,retrieve()方法不返回任何值,但它以某种方式处理输入参数,然后,在调用retrieve()方法后

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

Mat mat = new Mat();

while(videoCap.grap()) {

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

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


有人能解释这在java中是如何实现的吗?

修改作为参数传入的对象的状态并不是不可能的。不可变的对象当然不能被修改

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

public void modifyMap(Map<String, String> map) {
    map.put("object state", "modified!");
}
public void modifyMap(地图地图){
放置(“对象状态”,“修改!”);
}

在Java中需要理解的一个非常重要的概念: