java - 如何在不影响对象的情况下将对象作为参数传递给方法?

标签 java

我有一个对象 - Mat - 属于 Matrix 类,它有一个 arrayList 整数。现在我需要将 Mat 传递给一个名为 getAdjugateMatrix 的方法,该方法将使用 MatArrayList 的值,并且返回另一个 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.ofSet.ofMap .of 方法。
  • 将参数记录在“荣誉系统”下,接收方法的程序员 promise 不会修改传递的参数。显然这是不可靠的,因为它取决于程序员的意识和内存。所以我不推荐这种方法。

关于java - 如何在不影响对象的情况下将对象作为参数传递给方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62759792/

相关文章:

Java:Android排除最终编译文件中有依赖的包

java - 马尔可夫链 : SQL Database and Java Representation

java - 比较方法在排序时违反了其一般契约

java - 我的 android 应用程序安装在 SD 卡或内部手机存储上吗

java - 避免嵌套的 try-catch block

java - 将 SQL Server 2008 连接到 Java : Login failed for user error

java - 异常展开 key : bad padding: Decryption error

java - 测试仍然从真实的SharedPreferences中读取

java - 在运行 hadoop 分布式模式时一直失败

java - 根据Java中的类使用不同的方法