Effective Java: Item 24: Make defensive copies when needed
来源:互联网 发布:流水账软件免费下载 编辑:程序博客网 时间:2024/05/22 14:05
但是这种方式会导致在如下情况下不知不觉地改变Period中end的值。这可能是我们不愿意的。
因此我们要才用如下防御性的复制(defensive copy)方法
而在Flex当中我们会发现ArrayCollection的一个问题就是因为没有采用防御性地复制,如
防御性复制的另一个相关问题还体现在get方法当中,如下
解决方法就是
在这里为什么用clone而不是前面用new Date(time)构造函数,因为前面如果用clone的话,不能确定返回值一定是Date类型,注意clone的返回值是Object,而这里用clone是因为我们明确知道它是Date类型了,其返回值肯定也是Date了。
还有一点很有意思的是,考虑到这种get会影响到类的muttable性质,所以Date.getTime返回的不是Date类型,而是long,这样就强迫你自己利用构造函数new Date(long time)来生成新的Date。
Effective Java原来还是有些东西是没有注意的。再看看。
- Effective Java: Item 24: Make defensive copies when needed
- Make defensive copies when needed
- Effective Java: Item 1
- Effective Java(2 Edition) Item 64译文
- Effective Java-Item13和Item 14
- Effective Java(Item: 13 to 22)
- Effective Java(Item: 23 to 37)
- Effective Java(Item: 38 to 56)
- Effective Java(Item: 57 to 78)
- Effective Objective-C 2.0: Item 43: Know When to Use GCD and When to Use Operation Queues
- Effective C#之Item 29:Use the new Modifier Only When Base Class Updates Mandate It
- <Effective Mordern C++>笔记:Item 7:Distinguish () and {} when creating objs.
- No rule to make target , IYingshiService.aidl needed by IYingshiService.java的解决办法
- Effective Objective-C 2.0: Item 30: Use ARC to Make Reference Counting Easier
- 10 Common Mistakes Java Developers Make when Writing SQL
- 10 More Common Mistakes Java Developers Make when Writing SQL
- 10 More Common Mistakes Java Developers Make when Writing SQL
- 10 More Common Mistakes Java Developers Make when Writing SQL
- DNS查询指令:host 、nslookup 、dig 详解
- 互联网历史上15个划时代的“第一”
- Ext js面向对象的特性
- Literal与Label Web 服务器控件
- QT的 Meta-Object系统
- Effective Java: Item 24: Make defensive copies when needed
- 堆内存和栈内存详解
- 重读 c primer plus
- Enterprise Architect学习笔记-EA中关系
- 在Xcode中使用GLUT开发OpenGL应用程序
- ARRAYLIST VECTOR LINKEDLIST 区别与用法
- gridview,datalist,repeater控件使用
- 气血两虚 - 粥补-老婆膳食
- STM32串口中断方式接收