java 中的不可变函数参数
Immutable function arguments in java
我是 java 的新手,我遇到过这个问题:
在 C/C++ 中,我们有 const 修饰符,它使函数参数 Immutable,因此用户确信他们传递的参数不会改变。
但我在 java 中找不到同样的东西。当然 final 修饰符使该字段只能分配一次,并且在某种程度上可以正常工作。但是在发送之前我需要修改的对象呢?(我可以制作对象的最终副本,但我觉得它不够好。如果我错了请纠正我)。对象的字段呢?我们如何才能以确信对象完整性的方式传递对象?
在 Java 中,不变性是类型的内在 属性。
例如String
是不可变的。不需要 const。 StringBuilder
、CharSequence
是或可能是可变的。所以需要一份副本。在这些情况下,快速 .toString()
。会做的。
C++ 默认为参数的隐式副本。复制在某种程度上是不变性的更好版本。 const &
是一种无需付费即可获得副本的有效方式。 (我相信很多人会强烈反对这一段。)
我是 java 的新手,我遇到过这个问题: 在 C/C++ 中,我们有 const 修饰符,它使函数参数 Immutable,因此用户确信他们传递的参数不会改变。
但我在 java 中找不到同样的东西。当然 final 修饰符使该字段只能分配一次,并且在某种程度上可以正常工作。但是在发送之前我需要修改的对象呢?(我可以制作对象的最终副本,但我觉得它不够好。如果我错了请纠正我)。对象的字段呢?我们如何才能以确信对象完整性的方式传递对象?
在 Java 中,不变性是类型的内在 属性。
例如String
是不可变的。不需要 const。 StringBuilder
、CharSequence
是或可能是可变的。所以需要一份副本。在这些情况下,快速 .toString()
。会做的。
C++ 默认为参数的隐式副本。复制在某种程度上是不变性的更好版本。 const &
是一种无需付费即可获得副本的有效方式。 (我相信很多人会强烈反对这一段。)