首页 > 解决方案 > java中的不可变函数参数

问题描述

我是 java 新手,遇到过这个问题:在 C/C++ 中,我们有const修饰符,它使函数参数不可变,因此用户确信他们传递的参数不会改变。

但是我在java中找不到同样的东西。当然final修饰符使该字段只能分配一次,并且在某种程度上可以正常工作。但是在发送之前我需要修改的对象呢?(我可以制作对象的最终副本,但我觉得它不够好。如果我错了,请纠正我)。Object 的字段呢?我们如何以一种我们确信对象完整性的方式传递对象?

标签: javafinal

解决方案


在 Java 中,不变性是类型的内在属性。

例如String是不可变的。不需要constStringBuilder,CharSequence是或者可能是可变的。所以需要一个副本。在这些情况下,快速.toString(). 将完成这项工作。

C++ 默认为参数的隐式副本。在某种程度上,复制是不变性的更好版本。const &是一种无需付费即可获得副本的有效方式。(我相信很多人会强烈反对这一段。)


推荐阅读