先贴上代码,照着教材敲的,给一些自己觉得需要理解的地方加上了注释。
//************************************************************** // // 本程序是关于“不可变类”的学习实例,通过final修饰符修饰类Field // 使Field值不可修改,从而创建不可变类(Immutable) // // 同时,改写了equals方法和hashCode方法,来确保在关键Field值相同 // 的情况下创建的对象也是相同的对象。 // //************************************************************** package org.kong.immutableclass; public class Address { //final修饰符修饰的Field,必须显式的初始化,本程序是通过构造方法初始化。 // 不能通过setter方法对其进行赋值,因为final变量一旦赋值,则不可被改变。 private final String detail; private final String postCode; public Address() { this.detail = ""; this.postCode = ""; } public Address(String detail, String postCode) { this.detail = detail; this.postCode = postCode; } //这段setter方法会产生编译时错误,因为detail是final变量,本程序已在构造器内进行了 // 初始化,其值将不可被改变。 //publci void setDetail(String detail) //{ // this.detail = detail; //} public String getDetail() { return this.detail; } public String getPostCode() { return this.postCode; } public boolean equals(Object obj) { if(this == obj) { return true; } if(obj != null && obj.getClass() == Address.class) { // Address ad = (Address)obj; // if(this.getDetail().equals(ad.getDetail()) && this.getPostCode().equals(ad.getPostCode())) { return true; } } return false; } //重写hashCode()是为了保证自定义类所创建的相同对象的hashcode能够一致 //若不重写,则系统使用Object类的hashCode方法返回值,返回的是Address类对象的hashcode,而实际上应该返回该对象 // 的关键Field的hashCode,才能保证关键Field相同的不同对象是相同的对象。 public int hashCode() { return detail.hashCode() + postCode.hashCode()*31; } }
相关推荐
Immutable 是 Facebook 开发的不可变数据集合。不可变数据一旦创建就不能被修改,是的应用开发更简单,允许使用函数式编程技术,比如惰性评估。Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map...
immutable - Javascript不可变的持久化数据集合
dot-prop-immutable, 点prop的不可变版本,带有一些扩展名 dot-prop-immutable 点prop的不可变版本,带有一些扩展名。npm install dot-prop-immutable这个模块的动机是在不改变普通JavaScript对象的现有状态的情况
主要介绍了JAVA不可变类(immutable)机制与String的不可变性(推荐)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
kotlinx.collections.immutable, Kotlin的不可变集合 Prototype Kotlin的不可变集合库 Kotlin的不可变集合接口和实现 Prototype 。有关详细信息,请参阅建议列表。Prototype实现基于 pcollections ( 版权 2015的作者...
go-immutable-radix, 在Golang中,一个不可变的基数树实现 go-immutable-radix 提供实现不可变 radix的iradix 包。 包只提供单个 Tree 实现,针对稀疏节点优化。作为一个基数树,它提供以下内容:O(k) 操作。在许多...
Kotlin的不可变集合接口和实现原型。
前端开源库-immutable-ai不可变人工智能,不可变核心的可选接口
Dict和Set可以有任何东西作为键,包括可变对象和不可变对象( Dict 、 Set 、 List等) 您还可以使用SortedDict和SortedSet来定义您自己的自定义排序。 Equality 是明确定义的,并且基于 。 这意味着可变对象仅在...
ImmutableCollections-基于数组的Java不可变集合 版权所有(c)2017 Nicholas Cull 有关许可信息,请参阅LICENSE.txt。 Java 1.8的基于数组的不可变集合 排序和未排序的变体 风格类似于番石榴收集包装 空友好 Java 8...
点属性不可变 带有一些扩展的 dot-prop 的不可变版本。 npm install dot-prop-immutable 这个模块的动机是有一个简单的实用程序来改变 React-Redux 应用程序中的状态,而不会改变普通 JavaScript 对象的现有状态。 ...
IMMUTABLE-XJC是一个JAXB 2.x XJC插件,用于使模式派生类不可变: 删除所有的setter方法 分数班决赛 创建一个以所有字段为参数的公共构造函数 创建一个受保护的无参数构造函数 将课程中的所有字段标记为final ...
一成不变的意思,所以 Immutable List 就是一个不可变的 List 类,这意味着该 List 声明后,它的内容就是固定的,不可增删改的。 如果尝试对 List 中的元素进行增加、删除或者更新,就会抛出 ...
#ImmutableObject ImmutableObject 被创建为一种简单的客户端 Javascript 方式来制作不可变对象。 它使用一组简单的方法来获取和设置项目。 仅当您为isExtensible传递true参数时才允许设置项目。 ##基本用法: 可以...
@ polyn / immutable使用本机JavaScript功能(即Object.freeze )使对象不可变。 它使用来验证您定义的架构,并且还支持自定义验证器(即,如果您更喜欢JSON架构)。 与Object.freeze不同,@ polyn / immutable递归...
不可变模型由 Immutable.js 支持的不可变模型和集合抽象
seamless-immutable: 不可变JS数据结构向后兼容常规数组和对象
不可变转换 序列化和恢复不可变集合。 快速开始 import conv from 'immutable-conv' import { is , List , Map } from 'immutable' let lst = List ( [ 3 , 14 , 15 ] ) , serialized = conv . serialize ( lst )...
1.Overview of Docker the company and growth 2.Overview of Docker the latest stuff (DCUS announcements) & CaaS;...4.Docker and Immutable infrastructure/Microservices working together.