我有一个对象 - Mat
- 属于 Matrix
类,它有一个 arrayList
整数。现在我需要将 Mat
传递给一个名为 getAdjugateMatrix
的方法,该方法将使用 Mat
的 ArrayList
的值,并且返回另一个 Matrix
对象,但我根本不想让 adjugateMatrix
改变 Mat
。我怎样才能做到这一点?如果我将 Mat
设置为 final,执行 Matrix temp = mat
,然后将 temp 传递给 getAdjugateMatrix
,它会起作用吗?时间差
最佳答案
How do i pass an object as a parametre to a method without affecting the object?
默认情况下,您不能。当您将一个对象作为参数传递时,接收方法可以以任何它认为合适的方式使用该对象。
评论概述了可能的解决方案:
- 做一个deep copy .传递一个带有所有数据的 Xerox 副本(克隆)的新对象。现在接收方法可以在不影响原始方法的情况下进行它想要的所有更改。查看问题,How do I copy an object? .
- 将您传递的对象的类重新设计为immutable .有关不可变对象(immutable对象)的示例,请参阅 java.time 类以及新的
List.of
、Set.of
和Map .of
方法。 - 将参数记录在“荣誉系统”下,接收方法的程序员 promise 不会修改传递的参数。显然这是不可靠的,因为它取决于程序员的意识和内存。所以我不推荐这种方法。
关于java - 如何在不影响对象的情况下将对象作为参数传递给方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62759792/