`
swordinhand
  • 浏览: 309633 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Effective Java 读书笔记(2)

    博客分类:
  • JAVA
阅读更多
    8,在重写equals方法时要遵守一些约定。并不是每个类都需要重写equals方法,但是如果你需要,记得要遵守自反性,对称性,一致性,传递性。如果父类可以被实例化,而子类又增加了值域,那么equals方法肯定会有问题,所以,多用组合,少用继承。Java类库里就有这样的例子,java.sql.Timestamp继承了java.util.Date并增加了一个值域nanos,破坏了对称性。
   
        Date d = new Date();
        Timestamp ts1 = new Timestamp(d.getTime());
        System.out.println(d.equals(ts1));//true
        System.out.println(ts1.equals(d));//false

   
    9,如果重写equals方法,那么一定要重写hashcode方法。两个相等的对象一定要有相同的hashcode。
    10,总是重写toString方法,提升可读性。
    11,谨慎的实现clone方法,如果你不是继承了一个已经实现了clone方法的类,最好是不用clone,提供一个拷贝构造函数更好。
    12,考虑实现Comparable接口。一般来说,compartTo方法的实现要和equals方法的实现相同,但是Java标准库里也有不符合的,比如BigDecimal,这样的话,把BigDecimal对象放在不同的Set里,行为就不一致了。
        BigDecimal d1 = new BigDecimal("1.0");
        BigDecimal d2 = new BigDecimal("1.00");
        HashSet<BigDecimal> set1 = new HashSet<>();
        set1.add(d1);
        set1.add(d2);
        System.out.println(set1.size());//2
        TreeSet<BigDecimal> set2 = new TreeSet<>();
        set2.add(d1);
        set2.add(d2);
        System.out.println(set2.size());//1
分享到:
评论

相关推荐

    effective java 读书笔记

    effective java 读书笔记,第二版自己摘要并翻译,以备速查。

    Effective Java读书笔记.pdf

    "Effective Java读书笔记" Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展...

    2021年EFFECTIVEJAVA读书笔记.docx

    2021年EFFECTIVEJAVA读书笔记.docx

    Effective-Java读书笔记

    Effective-Java读书笔记,别人分享的

    Effective-Java读书笔记(上)

    基于Effective Java第二版的读书笔记,可以帮助你更好的阅读这边Java圣经,更快的理解其思想

    Effective Java.docx

    Effective Java读书笔记,记载了大部分我觉的有用的东西,前半部分有代码说明,但后半部分的代码,太过琐碎,就没有整理

    Android代码-一个集Gank.Io,Rxjava示例,操作符,MD控件使用,各种好玩Ap示例的学习App。

    安卓艺术开发探索读书笔记,EffectiveJava读书笔记. 收集各大神博客以及安卓笔记,安卓面试笔记等方便手机端查看. 更新说明 v2.2.2 1.增加了一些最近在学习比较好的安卓大神的博客. 2.增加了来自GeniusVJR整理的安卓...

    java软件笔试题-MyNotebook:我大学时期的笔记本

    java软件笔试题 my notebook 我的笔记本,大部分是在大二大三的时候写的笔记,对于已经毕业的来说可能比较基础甚至naive。...7:读书笔记 thinking in java effective java Android开发艺术探索 Android插件化开发指南

    notes:JavaJava后端工程师的学习笔记https

    loveincode's notes 学习工作中的一些记录,收藏。 操作系统 , 编译原理 , 计算机网络 , 互联网协议... 常用数据结构与算法 Java 实现 数据结构 与 排序算法 ...读书笔记 Effective Java , HTTP权威指南 , Java

    AndroidRank 干货学习客户端

    作者HotBitmapGG,源码StudyProject,一款 Material Design 风格的 AndroidRank 干货学习客户端,需要...安卓艺术开发探索读书笔记,EffectiveJava 读书笔记. 收集各大神博客以及安卓笔记,安卓面试笔记等方便手机端查看.

    asp.net知识库

    Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集的反射 实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述...

Global site tag (gtag.js) - Google Analytics