Java 在 Rust 中的 final 是什么?
What is the equivalent of Java's final in Rust?
在方法、属性等方面 Java 的 final
的 Rust 等价物是什么...
final
对于方法没有意义,因为 Rust 没有实现继承。
final
的属性不存在,因为它与 继承的可变性 没有很好地结合。在大多数情况下,当且仅当它们的所有者 a
是可变的时,属性 a.x
是可变的。虽然可以选择更多的可变性(这被称为 inherent 可变性),但相反(一个字段在其他可变值内不可变)被认为太麻烦而不值得。这部分是因为 Rust 没有默认引用语义,所以即使您不能覆盖单个字段,您也可以始终完全覆盖 "object"。
局部变量的 final
类似于 Rust 中的 默认行为 (默认情况下,变量是深度不可变的)。存在差异,主要是引用类型的 final
局部仅防止更改 reference 而不是 引用的对象 — Rust 继承了可变性,见上文。
在方法、属性等方面 Java 的 final
的 Rust 等价物是什么...
final
对于方法没有意义,因为 Rust 没有实现继承。final
的属性不存在,因为它与 继承的可变性 没有很好地结合。在大多数情况下,当且仅当它们的所有者a
是可变的时,属性a.x
是可变的。虽然可以选择更多的可变性(这被称为 inherent 可变性),但相反(一个字段在其他可变值内不可变)被认为太麻烦而不值得。这部分是因为 Rust 没有默认引用语义,所以即使您不能覆盖单个字段,您也可以始终完全覆盖 "object"。
局部变量的 final
类似于 Rust 中的 默认行为 (默认情况下,变量是深度不可变的)。存在差异,主要是引用类型的final
局部仅防止更改 reference 而不是 引用的对象 — Rust 继承了可变性,见上文。