java - java中的不可变函数参数
问题描述
我是 java 新手,遇到过这个问题:在 C/C++ 中,我们有const修饰符,它使函数参数不可变,因此用户确信他们传递的参数不会改变。
但是我在java中找不到同样的东西。当然final修饰符使该字段只能分配一次,并且在某种程度上可以正常工作。但是在发送之前我需要修改的对象呢?(我可以制作对象的最终副本,但我觉得它不够好。如果我错了,请纠正我)。Object 的字段呢?我们如何以一种我们确信对象完整性的方式传递对象?
解决方案
在 Java 中,不变性是类型的内在属性。
例如String
是不可变的。不需要const。StringBuilder
,CharSequence
是或者可能是可变的。所以需要一个副本。在这些情况下,快速.toString()
. 将完成这项工作。
C++ 默认为参数的隐式副本。在某种程度上,复制是不变性的更好版本。const &
是一种无需付费即可获得副本的有效方式。(我相信很多人会强烈反对这一段。)
推荐阅读
- python - 根据numpy数组中的函数查找计数
- java - java - 如何穿越由java中的道路连接的城市网络?
- python - 在 numpy ndarray 中进行高效的邻域搜索,而不是嵌套的条件 for 循环
- angular10 - 单击事件时,textarea 字段应为空
- c++ - std::future::then() 和并发 TS 在哪里?
- google-cloud-platform - DialogFlow,修改用户请求
- apache-zookeeper - 无法启动 zookeeper
- unit-testing - 如何模拟 CriteriaQuery.where(EntityRoot.get(ID).in(List
) - html - HTML 在不使用 javascript 的情况下检测浏览器窗口宽度的变化
- android - 在 buildozer 上构建 apk 时出错