Effective Java目录

第一章         
        引言
        
    第二章         
        阐述何时以及如何创建和避免创建对象,如何确保对象能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清除动作

                第1条
                    用静态工厂方法代替构造器
                第2条
                    遇到多个构造器参数时要考虑使用构建器
                第3条
                    用私有构造器或者枚举类型强化Singleton
                第4条
                    通过私有构造器强化不可实例化的能力
                第5条
                    优先考虑依赖注入来引用资源
                第6条
                    避免创建不必要的对象
                第7条
                    消除过期的对象引用
                第8条
                    避免使用终结方法和清除方法
                第9条
                    try-with-resources优先与try-finally
        
    第三章         
        阐述所有对象都通用的方法,如equals、hashCode、toString、clone和comparable.compareTo方法等

        第10条
            覆盖equals时请遵守通用约定
        第11条
            覆盖equals时总要覆盖hashCode
        第12条
            始终要覆盖toString
        第13条
            谨慎地覆盖clone
        第14条
            考虑实现Comparable接口
        
    第四章         
        阐述作为Java语言的核心以及Java语言的基本抽象单元(类和接口)在使用上的一些指导原则,以设计出更加有用、健壮和灵活的类与接口

        第15条
            使类和成员的可访问性最小化
        第16条
            要在公有类而非公有域中使用访问方法
        第17条
            使可变性最小化
        第18条
            复合优先于继承
        第19条
            要么设置继承并提供文档说明,要么禁止继承
        第20条
            接口优于抽象类
        第21条
            为后代设计接口
        第22条
            接口只用于定义类型
        第23条
            类层次优于标签类
        第24条
            静态成员类优于非静态成员类
        第25条
            限制源文件为单个顶级类


    第五章

        阐述在Java1.5发行版本中新增加的泛型

        第26条
            请不要使用原生态类型
        第27条
            消除非受检的警告
        第28条
            列表优于数组
        第29条
            优先考虑泛型
        第30条
            优先考虑泛型方法
        第31条
            利用有限制通配符来提升API的灵活性
        第32条
            谨慎并用泛型和可变参数
        第33条
            优先考虑类型安全的异构容器

    第六章 
        阐述在Java1.5发行版本中新增加的和注解
        

        第34条
            用enum代替int常量
        第35条
            用实例域代替序数
        第36条
            用EnumSet代替位域
        第37条
            用EnumMap代替序数索引
        第38条
            用接口模拟可扩展的枚举
        第39条
            注解优先于命名模式
        第40条
            坚持使用Override注解
        第41条
            用标记接口定义类型


    第七章 
        讨论在Java 8中新增的函数接口、Lambda表达式、方法引用,以及处理数据元素序列提供类库级别支持的Stream API

        第42条
            Lambda优先于匿名类
        第43条
            方法引用优先于Lambda
        第44条
            坚持使用标准的函数接口
        第45条
            谨慎使用Stream
        第46条
            优先选择Stream中无副作用的函数
        第47条
            Stream要优先用Collection作为返回类型
        第48条
            谨慎使用Stream并行
        
    第八章 
        讨论方法设计的几个方面:如何处理参数和返回值,如何设计签名,如何在方法中编写文档,从而使方法设计在可用性、健壮性和灵活性上有进一步的提升

        第49条
            检查参数的有效性
        第50条
            必要时进行保护性拷贝
        第51条
            谨慎设计方法签名
        第52条
            慎用重载
        第53条
            慎用可变参数
        第54条
            返回零长度的数据或者集合,而不是null
        第55条
            谨慎返回optional
        第56条
            为所有导出的API元素编写文档注释
        
    第九章 
        主要讨论Java语言的具体细节,包括局部变量的处理、控制结构、库类的使用。各种数据类型的用法、反射机制和本地方法的用法,以及优化和命名惯例

        第57条
            将局部变量的作用于最小化
        第58条
            for-each循环优先于传统的for循环
        第59条
            了解和使用类库
        第60条
            如果需要精确的答案,请避免使用float和double
        第61条
            基本类型优先于装箱基本类型
        第62条
            如果其他类型更适合,则尽量避免使用字符串
        第63条
            了解字符串连接的性能
        第64条
            通过接口引用对象
        第65条
            接口优先于反射机制
        第66条
            谨慎地使用本地方法
        第67条
            谨慎地进行优化
        第68条
            遵守普遍接收的命名惯例
        
    第十章 
        阐述如何充分发挥异常的优点来提高程序的可读性、可靠性和可维护性,以及减少异常使用不当所带来的负面影响,并提供一些有关于有效使用异常的指导原则

        第69条
            只针对异常的情况才使用异常
        第70条
            对可恢复的情况使用受检异常,对编程错误使用运行时异常
        第71条
            避免不必要地使用受检异常
        第72条
            优先使用标准的异常
        第73条
            抛出与抽象对应的异常
        第74条
            每个方法抛出的所有异常都要建立文档
        第75条
            在细节消息中包含失败-捕获消息
        第76条
            努力使失败保持原子性
        第77条
            不要忽略异常
        
    第十一章 
        阐述如何写出清晰、正确、文档组织良好的并发程序

        第78条
            同步访问共享的可变数据
        第79条
            避免过度同步
        第80条
            executor、task和stream优先于线程
        第81条
            并发工具优先于wait和notify
        第82条
            线程安全性的文档化
        第83条
            慎用延迟初始化
        第84条
            不要依赖于线程调度器
        
    第十二章 
        讲解序列化方面的技术,其中包括序列化代理模式,它可以帮助你规避对象序列化的许多缺陷

        第85条
            其他方法优先于Java序列化
        第86条
            谨慎地实现Serializable
        第87条
            考虑使用自定义的序列化形式
        第88条
            保护性地编写readObject方法
        第89条
            对于实例控制,枚举类型优先于readResolve
        第90条
            考虑用序列化代理代替序列化实例

相关书籍:    《The Java Programing Language》(作者是Amold、Gosling和Holmes)
                    《The Java Language Specification》(作者是Gosling、Joy和Bracha)

(在读,需要可进行沟通)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Climbing-pit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值