自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容。 我假设将涵盖自Java 6以来引入Java的功能,的确如此。 但是,第三版Java开发人员经典版也有一些其他更改。 在本文中,我提供了有关在第三版中添加,更改或删除的主题的高级概述。 在列出我所观察到的似乎是《 有效Java第三版》中的新内容之前,我需要做出免责声明,说我很可能会错过本书中的几处更改,共有12章,涵
Effective Java学习总结 1.对象的创建和销毁 1.1考虑使用静态工厂方法代替构造函数 好处: • 与构造方法不同,静态方法有名字,当有多个构造函数是,可以用多个静态方法区分 • 静态工厂方法内可以实现自己的逻辑,可控制每次返回单例或者新对象 • 静态工厂方法可以返回原返回类型的子类对象,这个实在太有用了,面向接口编程必须洞察这点
最近看了effect java这本书,今天分享一篇书中关于异常的章节,正好我们组内也到我分享的轮次了,准备分享这个章节知识,顺便也就发出来大家一起探讨一下,花了两天整理了这篇文章,技术有限,自己也是理解了之后写出来的,知识点就这些,网上相关文章也有很多,但是我看有些是错误的,这些都是我自己写过例子,运行了之后下的结论,当然还有一些更深的知识,希望大家一起讨论第57条 :只针对异常的情况下才使用异常
EffectiveJava第三版  最新建议主要增加了lamda表达式和流的建议, ×××的是第二版没有的一创建和销毁对象1  考虑用静态工厂方法替换构造器2  当遇到多个构造器参数时考虑用构建器(建造者)替换3  用私有构造器或者枚举类型强化单例属性4  通过私有构造器强化不可实例化的能力5  依赖注入优先硬连接资源 
原创 2018-01-21 01:20:35
10000+阅读
2点赞
# 了解《Effective Java》的核心原则与代码示例 《Effective Java》是一本由乔什·布洛赫(Joshua Bloch)所著的书籍,旨在助力Java开发者提升编程技巧与代码质量。本书共分为多个条目,每个条目针对不同的编程场景提出了具体的建议,帮助开发者更有效地使用Java语言。 本文将挑选一些重要的原则,并通过代码示例进行说明,帮助大家更好地理解《Effective Ja
原创 2024-08-27 08:28:16
77阅读
  第一条:静态工厂方法代替构造器  静态工厂方法是返回一个类的实例的静态方法(此处介绍的静态工厂方法并不对应设计模式中的工厂模式),例:基本类型boolean转化为包装类:public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; }  提供静态工厂方法而不是构造方法的优势:静态工
1. 数组是协变的, 如果Sub是Super的子类,那么数组Sub[]也是Super[]的子类; 2. 数组是具体化的,在运行时才知道并检查它们的元素类型约束;
原创 2022-02-16 15:18:09
84阅读
1. 异常机制的设计初衷适用于不正常的情形,so,很少有JVM对其进行优化; 2. 把代码放在try-cache中阻止了现代JVM实现本来可能要执行的某些特定优化; 3. for遍历并不会导致冗余的检查,有些现代的JVM会将它们优化掉; 1. 使api更加易于学习和使用(通用,…
原创 2022-02-16 14:47:00
79阅读
1. 可能在处理过程中失败,并产生令人费解的异常 2. 更糟糕的情况是正常返回,但计算出错误的结果 3. 最糟糕的是正常返回,但使得某个对象处于被破坏但状态,在将来某个不确定的时候,某个不想干的点上引发错误 对于某些参数,方法本身没有用到,却被保存起来供以后使用,检验这类参数的…
原创 2022-02-16 15:18:50
26阅读
1. 将它保存在静态域中,作为类初始化的一部分; 2. 将它保存在volatile域,final域或者通过正常锁定访问的域中; 3. 将它放到并发的集合中; 1. 重用线程池中的线程,避免线程的创建和销毁所带来的性能开销; 2. 能有效控制线程池中的最大并发数,避免大量线程之间…
原创 2022-02-16 15:19:36
24阅读
Tips 《Effective Java, Third Edition》一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化。 在这里第一时间翻译成中文版。供大家学习分享之用。17. 最小化可变性不可变类简单来说是它的实例不能被修改的类。 包含在每个
转载 2023-08-14 10:25:19
26阅读
创建和销毁对象1、静态工厂方法代替构造器优点静态工厂方法有名称,能确切地描述正被返回的对象。不必每次调用都创建一个新的对象。可以返回原返回类型的任何子类对象。创建参数化类型实例时更加简洁,比如调用构造 HashMap 时,使用 Map < String,List < String > m = HashMap.newInstance() ,与 Map < String,Lis
原创 6月前
46阅读
优点静态工厂方法有名称,能确切地描述正被返回的对象。不必每次调用都创建一个新的对象。可以返回原返回类型的任何子类对象。创建参数化类型实例时更加简洁,比如调用构造 HashMap 时,使用 Map < String,List < String > m = HashMap.newInstance() ,与 Map < String,List < String > m > = new HashMap < String,List < String > >();缺点没有公共或受保护构造方法的类不能被子类化不像构造方法
《Effective Java》无疑是java领域的经典著作。第二版出来后,看了看,然后和第一版对比一下。 下面介绍第二版的变更,以及揣摩作者的意图。 删掉了原来的Substitutes for C constructs一章。 [b]C2 Creating and Destroying Objects[/b] Item 1 Consider sta
转载 2023-11-02 00:13:45
118阅读
1. 不提供任何修改对象状态的方法 2. 保证类不会被扩展:用final修饰或将所有构造方法私有化并提供公有的静态工厂方法 3. 使所有域都是final的(实际上只要没有方法能够对域产生外部可见的改变即可,如延迟初始化,懒汉单例等,都不能让该域是final的) 4. 使所有域都…
原创 2022-02-16 15:18:22
69阅读
1. int枚举: 引入枚举前,一般是声明一组具名的int常量,每个常量代表一个类型成员,这种方法叫做int枚举模式。 int枚举模式是类型不安全的,例如下面两组常量:性别和动物种类,二者不存在任何关系,然而却可以将ANIMAL_DOG传入一个需要性别参数的方法中,编译器不会出…
原创 2022-02-16 15:18:37
200阅读
# 如何实现“EffectiveJava 接口只用于定义类型” ## 介绍 在Java编程中,接口是一种非常重要的概念。接口可以用于定义类型,但在实际的编程过程中,我们经常使用接口来定义方法的契约。然而,Effective Java中提到了一个重要的原则:“接口只用于定义类型”。这意味着接口应该仅仅包含与类型相关的方法,并且不应该包含任何实现细节。这个原则可以帮助我们编写更具可维护性和扩展性的代
原创 2023-08-22 06:30:29
41阅读
1. 使这个类的到处API永远的束缚在该类的内部表示法上; 2. 消耗过多的空间;(如上链表项只是实现细节,不值得记录在序列化形式中,会消耗过多空间) 3. 消耗过多时间;(序列化逻辑并不了解对象图的拓扑关系,所有它必须经过一个昂贵的图遍历,但上面例子中沿着next引用遍历是非…
原创 2022-02-16 15:19:52
80阅读
考虑使用静态工厂方法创建对象public static Boolean valueOf(boolean b) { return b?Boolean.true:Boolean.false }让开发人员可以根据名称创建对象创建单例可以在静态方法中返回原类型对象的任何子对象。当一个类有好多可选参数时,如何构建1.使用重叠构造器;重叠构造器虽然可行,当是当有很多参数的时候,客户端代码任然很难阅
转载 2023-08-14 20:29:36
42阅读
一. 使用静态工厂方法代替构造器 1. 一个类对外提供获取自身实例对象的方法: 2. 静态工厂方法的优势 : a. 可以随意组合要初始化的属性,通过不同的命名,不仅可以避免构造器的限制(一个类只能有一个带有指定签名的构造器),而且可以做到顾名思义; b. 可以不用在每次调用时都…
原创 2022-02-16 15:17:12
136阅读
  • 1
  • 2
  • 3
  • 4
  • 5