构建大的、不可变的对象,而不使用具有长参数列表的构造函数
我有一些大的(超过 3 个字段)对象,它们可以而且应该是不可变的。每次遇到这种情况,我都会创建带有长参数列表的令人厌恶的构造函数。 感觉不太对劲…
Python 参考资料
有人可以解释为什么整数示例会导致 x 和 y 产生不同的值,而列表示例会导致 x 和 y 是同一个对象吗? x = 42 y = x x = x + 1 print x # 43 print y #…
在 C++ 中默认设置所有类型为常量
向编译器指示的最简单、最不唐突的方式是什么,无论是通过编译器选项、#define、typedef 还是模板,每次我说T,我真的是说T const?我不想使用外部预…
为什么 Microsoft 建议不要使用具有可变值的只读字段?
在开发类库的设计指南中,微软说: 不要将可变类型的实例分配给只读字段。 使用可变类型创建的对象在创建后可以进行修改。例如,数组和大多数集合是可…
在 Java 中将不可变实例分配给 Collection 的最佳方法
今天我在阅读一些 Hibernate 代码时遇到了一些有趣的事情。 有一个名为 CollectionHelper 的类,它定义了以下常量变量: public final class Collecti…
我如何在 Scala 中生成一个 immutable.Map ?
我已经尝试过这个,但它不起作用: val map:Map[String,String] = for { tuple2 <- someList } yield tuple2._1 -> tuple2._2 我还能如何将 Tuple2 列…
不变性和共享引用 - 如何协调?
考虑这个简化的应用程序域: 刑事调查数据库 Person 是参与调查的任何人 Report 是属于调查一部分的一些信息 Report > 引用主要Person(调查的主题) …
为什么 Matz 选择在 Ruby 中默认设置字符串可变?
这是这个问题的反面:为什么字符串不能是可变的在 Java 和 .NET 中? 在 Ruby 中做出这种选择只是因为操作(附加等)对可变字符串有效,还是还有其他…
关于书籍示例的问题 - Java 并发实践,清单 4.12
我正在实践 Java 并发中的一个示例,但不明白为什么在以下代码中需要并发安全容器。 我没看到容器如何 “locations”的状态 施工后可修改;因此,由于…