Oracle官方并发教程之不可变对象(定义不可变对象的策略)
2023-09-11 14:16:10 时间
以下的一些规则是创建不可变对象的简单策略。并非所有不可变类都完全遵守这些规则,不过这不是编写这些类的程序员们粗心大意造成的,很可能的是他们有充分的理由确保这些对象在创建后不会被修改。但这需要非常复杂细致的分析,并不适用于初学者。
SynchronizedRGB类有两个setter方法。第一个set方法只是简单的为字段设值(译者注:删掉即可),第二个invert方法修改为创建一个新对象,而不是在原有对象上修改。 所有的字段都已经是私有的,加上final即可。 将类声明为final的 只有一个字段是对象引用,并且被引用的对象也是不可变对象。
经过以上这些修改后,我们得到了ImmutableRGB:
final public class ImmutableRGB { // Values must be between 0 and 255. final private int red; final private int green; final private int blue; final private String name; private void check(int red, int green, int blue) { if (red amp;lt; 0 || red amp;gt; 255 || green amp;lt; 0 || green amp;gt; 255 || blue amp;lt; 0 || blue amp;gt; 255) { throw new IllegalArgumentException(); public ImmutableRGB(int red, int green, int blue, String name) { check(red, green, blue); this.red = red; this.green = green; this.blue = blue; this.name = name; public int getRGB() { return ((red amp;lt; amp;lt; 16) | (green amp;lt; amp;lt; 8) | blue); public String getName() { return name; public ImmutableRGB invert() { return new ImmutableRGB(255 - red, 255 - green, 255 - blue, amp;quot;Inverse of amp;quot; + name);文章转自 并发编程网-ifeve.com
047:使用SQL SELECT语句检索数据(Retrieving Data Using the SQL SELECT Statement) 047:条件和排序(Restricting and Sorting Data)
相关文章
- Oracle官方并发教程之活跃度
- Oracle官方并发教程之Executor接口
- Oracle官方并发教程之中断
- Oracle官方并发教程之Guarded Blocks
- Oracle-查看oracle是否有表被锁
- 【Python Oracle】使用cx_Oracle 连接oracle的简单介绍
- Oracle中的填充函数lpad和rpad的用法(转)
- oracle常用函数使用大全 Oracle除法(转)
- cx_Oracle连接oracle数据库
- Oracle 附件日志的作用
- Mybatis对oracle数据库进行foreach批量插入操作
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
- ORACLE 官方文档
- Oracle 取出多个字段列中的最大值和最小值
- C# 连接Oracle数据库,免安装oracle客户端
- ORACLE 官方文档
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- ORACLE 数据库表空间的管理以及IM列式存储
- Oracle的学习心得和知识总结(二十二)|Oracle数据库Real Application Testing之Database Replay实操(二)