Effective Java
该版本内容为Effective Java中文版第三版的读书心得总结,该版有一些翻译不通顺,且有一些抽象概念,以及引用表达的不清楚,我会将这些内容补全,以方便大家理解,也便于自己理解与记忆
含低调
一个梦想是成为教师的程序员
展开
-
第11章:并发
第78条 对可以多个线程间共享的可变的数据的访问进行同步原子操作:指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch(切换到另一个线程),因此原子操作是不需要synchronized的synchronized的作用就是使一堆聚在一起的不具备原子性的代码具备原子性对象的不一致状态(inconsistent state):指不同线程...原创 2020-04-12 22:45:32 · 107 阅读 · 0 评论 -
第10章:异常
第69条 只针对异常的情况才使用异常69.1 使用异常完成流程控制的问题代码//基于异常的模式//该代码,希望通过抛异常的方式,完成遍历整个range数组中的元素,并调用其climb方法//有人这样用是因为被误导了,他们以为这样可以利用java的错误判断机制来提高性能//他们认为,for-each循环,每次对数组的访问,都要检查是否越界,可以通过异常的方法来表面这个检查try {...原创 2020-04-09 21:12:49 · 147 阅读 · 0 评论 -
第9章:通用编程
第57条 将局部变量的作用域最小化将局部变量作用域最小化,可以增强代码可读性和可维护性,并降低出错的可能性57.1 具体做法在第一次使用它的地方进行声明过早声明变量会导致代码难以读懂,等使用变量时,读者可能已经记不起该变量的类型和初始值了过早声明局部变量还会导致扩大整个作用域,如果变量在"应该使用它的块"外声明,会导致这个变量在这个目标区域之前或之后使用,后果将是灾难的每一...原创 2020-04-04 21:28:20 · 235 阅读 · 0 评论 -
第8章:方法
第49条 检查参数的有效性失败原子性:失败的方法调用,应该使对象保持在被调用之前的状态,具有这种属性的方法,被称为具有失败原子性//例如Stack的pop方法,加上了size==0检查,保证了失败原子性//如果不这样做,那么虽然之后也会抛出异常,但该Stack对象的size属性就会变为负数,导致在之后再调用该对象进行操作,仍然会抛出异常,无法正常工作public Object pop(...原创 2020-03-31 16:19:33 · 266 阅读 · 0 评论 -
第7章:Lambda和Stream
第42条 Lambda优先于匿名类匿名内部类/Lambda对象,只能在静态方法中被序列化,因为匿名内部类和Lambda,本质上都是非静态内部类,这个非静态内部类在非静态方法中创建出的对象,会持有一个外部类的对象的引用(在静态方法中创建不会),被序列化时,会优先序列化这个外部类对象,而如果外部类没有实现Serializable接口,就会序列化失败Lambda表达式中无法定义成员变量,而匿名内部...原创 2019-12-12 11:27:22 · 190 阅读 · 0 评论 -
第6章:枚举和注解
111原创 2019-11-17 17:26:45 · 327 阅读 · 0 评论 -
第5章:泛型
第26条:请不要使用原生态类型26.1 泛型介绍如果类/接口的声明中,具有一个或多个类型参数(type parameter),就叫做泛型(generic:通用)类或泛型(通用)接口。泛型类、泛型接口都是泛型(通用)类型(generic type)//例如List接口声明时,定义了一个表示类型的参数E,这个接口就是一个泛型接口//这个接口全称是List<E>,读作E的List...原创 2019-11-10 17:00:12 · 173 阅读 · 0 评论 -
第4章:类和接口
第15条:使类和成员的可访问性最小包级私有的类或接口变动,不会损害现有的客户端让每个类或成员尽可能地不可访问个包级私有顶级类或接口只被一个类使用,那么可以考虑这个类作为使用它的唯一类的静态内部类减少不必要的public比减少default的类更重要如果类实现Serializable接口,其私有成员可能“泄漏(leak)”到导出的API中。protected成员,也必须永远支持子类重...原创 2019-10-25 21:59:38 · 394 阅读 · 0 评论 -
第3章:对于所有对象都通用的方法
前言Object的设计是为了扩展它的所有非final方法(equals、hashCode、toString、clone、finalize),都有明确的通用约定如果实现Object的类,重写这些方法,但未遵守约定,那么其他依赖于这些约定的类(例如HashMap),就无法结合该类一起正常工作第10条:覆盖equals时请遵守通用约定10.1 无需重写equals方法的情况实例受控的类...原创 2019-10-23 11:21:04 · 160 阅读 · 0 评论 -
第2章:创建和销毁对象
第1条:考虑用静态工厂方法代替构造器这里指的静态工厂方法与设计模式中的工厂方法并不等同,这里的静态工厂方法就是一个public static的可以返回类的实例的方法1.1 静态工厂方法优势1.1.1 有名字Bookpackage chapter1.number1;public class Book {}BookStaticpackage chapter1.numb...原创 2019-10-21 10:09:03 · 319 阅读 · 0 评论