- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当 getter 返回一个属性时,例如返回一个包含其他相关对象的 List
,该列表及其对象是否应该是不可变的,以防止类外部的代码改变这些对象的状态,在主父对象不知道的情况下?
例如,如果一个 Contact
对象有一个 getDetails
getter,它返回 ContactDetails
对象的 List
,然后调用该 getter 的任何代码:
Contact
对象不知道的情况下从该列表中删除 ContactDetail
对象。Contact
对象不知道的情况下更改每个 ContactDetail
对象。那么我们应该怎么做呢?我们应该只相信调用代码并返回容易可变的对象,还是走艰难的路,为每个可变类创建一个不可变类?
最佳答案
这是一个你是否应该在你的代码中“防御”的问题。如果您是类(class)的(唯一)用户并且您相信自己,那么无论如何都不需要不变性。但是,如果此代码无论如何都需要正常工作,或者您不信任您的用户,那么请将外部化的所有内容设为不可变。
也就是说,我创建的大多数属性都是可变的。偶尔会有用户搞砸,但这又是他/她的错,因为有明确的记录表明,突变不应该通过通过 getter 接收的可变对象发生。
关于java - 考虑到对象封装,getter 应该返回一个不可变的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/114237/
我正在尝试解决 spoj 上的问题。显然,根据注释,输入行以 \r\n 结尾。我从之前的问题中了解到的关于 \r\n 的信息是它是 Windows 的东西。我想知道的是如何考虑它。目前我在 C++ 中
有大量对象。集合是动态的:对象可以随时添加或删除。我们称对象总数为 N。 每个对象都有两个属性:上次更新的质量 (M) 和时间 (T)。 每隔 X 分钟,应从中选择一小批进行处理,这会将它们的 T 更
我有一张带有免费赠品的注册表,但有人滥用它注册为 jo+1@gmail.com jo+2@gmail.com 有没有我可以在我的电子邮件记录上运行的标准算法来验证这种情况? 我可以在其中获取 jo@
我正在管理一个已建立的网站,该网站目前正在升级(完全重新更换),但我担心我会失去所有的 Google 索引(也就是说,会有很多页面在谷歌的索引中,它将不再存在于那个地方)。 上次我升级一个(不同的)网
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 个月前。 Improv
思考横向拿着 iPhone X。 由于安全区域看起来是对称的,所以安全区域的插入在左侧和右侧一样大,无论缺口在哪一侧。 假设我们希望将安全区域进一步延伸到没有凹口的那一侧的屏幕边缘。有人对此有好的方法
Haskell 通常被视为纯函数式语言的示例。鉴于 System.IO.Unsafe.unsafePerformIO 的存在,这如何合理? 编辑:我认为“纯功能”意味着不可能将不纯的代码引入到程序的功
我创建了两个 HashMap ,我想在同一个 for 循环中迭代它们。 HashMap hashmapA = new HashMap<>(); HashMap hashmapB = new HashM
在阅读了 Venkat Subramaniam 所著的《Java 函数式编程》第 106-108 页中的“昂贵资源的延迟初始化”之后,发现很难理解此代码片段的技巧 我的理解:变量heavy上课Hold
我有一个模型 A,它包含一个通用外键关系,并限制选择其他 3 个模型(将它们视为 B、C和 D) 在同一个应用程序中。我知道我们不能使用 filter 或 get 或任何其他查询集操作的通用外键的局限
我正计划制作一个 最终 使用 Cassandra 的网络应用程序.但现在我没有它,也没有服务器来运行它,我想从使用 MySQL 开始。 问题是,是否有可能以这样一种方式构建数据和查询,以便稍后将其移植
所以我刚开始,学习不同的教程并通过征服基础知识来挑战自己。我知道这对大多数人来说可能看起来很低调,但要温和一点,我对此有点陌生。 我尝试使用媒体查询 4,例如 @media (30em <= widt
我需要遍历 .csv,直到名为“seguir”的 bool 值变为 False。问题是 takewhile 丢弃了最后一次迭代和值,我需要它,因为该行中的 .csv 值与我的问题相关。 for lin
我试试这个: Stopwatch timer = new Stopwatch(); timer.Start(); for (i = 0; i < 100; i++) { //do here s
我看过这个讨论 map 的帖子:Map function in MATLAB? 因此,我想知道是否有类似的方法来考虑索引。比如如果我想做类似 (x_i)^i 的事情。 非常感谢! 最佳答案 一个例子:
异步 docs阅读: Most asyncio objects are not thread safe. You should only worry if you access objects o
背景 假设我有一个 Google map View ,另一个 View 在它上面,覆盖了它的一部分,隐藏了 map 的一些内容。 问题 我需要制作 map 的“相机”,聚焦并在坐标上有一个标记,但让它
有什么方法可以找出目录占用的原始 HDFS 空间。据我所知 hdfs dfs -du -s/dir 显示 /dir 大小,不考虑内部文件的复制。 最佳答案 运行命令 hadoop fsck/dir 并
我正在用 Java 编写程序,我需要确定某个日期是否是周末。然而,我需要考虑到在不同的国家周末是在不同的日子,例如在以色列是周五和周六,而在一些伊斯兰国家是周四和周五。更多详情可以查看this Wik
我将HttpRequestBase包装为HttpRequestMessage,这要求将所有 header 都复制过来。但是,由于HttpRequestMessage特定于哪些 header 应用于请求
我是一名优秀的程序员,十分优秀!