Effective Java 中文版第二版的读书心得(一)

《Effective Java》学习心得——优雅而安全地构建Java对象 读了《Effective Java》这本书,感触良多。它刷新了我对Java语言的认识,纠正了原来的许多编程坏习惯。感叹Java的世界原来是如此丰富,内功对于一名技术人员是多么重要!本文记录本书的第2条建议——用构建器(Builder)优雅、安全地构建对象。 阅读详情

 虽然只看到了不到100页,但收获还是很多的。

首选很感谢Joshua Bloch写的这本书,当然更感谢我们的司令翻译。至少目前我看到的100页的内容,基本没发现翻译很别扭的地方,包括错别字也没有发现,至少没有影响到我对书中内容的理解。再次感谢。

在后面的读书心得里,我会根据我的个人理解,将书中的各个知识点逐个和大家分享。 书中的一些观点我也不是完全赞同的,呵呵(估计是我的水平不够,呵呵呵)。

我们先看全书第一个问题:考虑用静态工厂方法代替构造器。

也就是,不再使用 new ()这种方式来获得一个类的实例,而是通过工厂方法获得。
优点:
1 有名字
  这个我体会还是比较深的,在JDK里,我见过一个类的最多的构造器数量,有16个。大家可以看看 java.math.BigDecimal 这个类就知道了。
  就算一个类的构造器有4个左右,我想你很可能在使用的时候会极其注意,不要选错了到底是用哪一个。

  所以,如果能提供一个很好命名的方法来实现构造类,确实是一个不错的主意,比如

  BigDecimal.getInstanceFromString(...); 我想这个名字虽然有点垃圾,但要表达的意思确实异常的明确。

  在一些第三方的库里面,这种情况更加突出。我许多时候不得不看看API文档,来区分我的那个int参数到底是使用三个参数的构造器,还是使用四个参数的构造器。因为他们太像了。

2 可以单例
  这个就不用说了,你可以在方法里干你要做的任何事情,而new绝对会给你一个新的实例。

3 可以返回任何子类型。
  这个对于系统的扩展是很有用处的。new 已经决定了你肯定要这个类,而静态方法却可以修改,不一定肯定返回你方法所在的类,可以在必要时替换为一个子类。

4 代码简便
  这点我体会不深,呵呵
  不过这个写法我确实经常用
  List<String> list = new ArrayList<String>();
  后面的那个ArrayList<String>里面的 String就是一个例子吧。不过我倒是不是很在意这个,因为我很喜欢这样写了。
下面这个例子看上去确实不错。呵呵!

《Effective Java 中文版》读书笔记 本书分为12章共90个条目,涵盖了Java 5.0/6.0/ 7.0/ 8.0/9.0的种种技术要点。与第2版相比,本书删除了“C语言结构的替代”一章,增加了Java 7及之后所引入的新特性: Lambda表达式、Stream、 Optional 类、接口中的默认方法、try-with-resources、@SafeVarargs注解、Module 模块化。数量上从78个条目发展到了90个,不仅增加了12个条目,并对原来的所有资料都进行了全面的修改,删去了一些已经过时的条目。但是,各章之间并没有严格的前后顺 阅读详情

相关推荐

VScode利用EIDE和cortex-debug进行stm32开发(也适用51)

你是否因为keil页面太丑而烦恼,你是否因为keil编译太慢而恼怒,ok阿,今天也是给大家带来怎么在vscode上进行stm32的编程(我不会告诉你,我搞了好几天才搞好的💔💔💔)为什么是简单介绍?因为太啰嗦了,我嫌麻烦😋,大家可以去EIDE的官方文档去看。

weixin_73952614的博客 9395

Effective java第二版读书笔记

下面对Effective java第二版中的技术点进行总结 技巧 优点 缺点及注意事项 用静态工厂方法代替构造器 有名称, 不必在每次调用时都创建一个新对象,可返回原返回类型的任何子类型对象,创建参数化实例时,代码更简洁 若类不含有公有或受保护的构造器,不能被子类化,它们与其他静态方法实际上没有任何区别 多个构造器参数时考虑用构造器 Builder模式,利用所有必要的参

smileiam的专栏 1923

RandLA-Net复现SemanticKITTI和S3DIS数据集

RandLA-Net复现KITTI和室内数据集

weixin_48845174的博客 4118

《Effective Java中文版 第2版》读书笔记

为什么看这本书? Java 四大名著之一,Java 之父 James Gosling 推荐的书。说来惭愧,搞 Java 6 年半都没有看过这本书。 前两天研究Builder 模式解决构造函数参数过多的问题,被一位大佬推荐看一下这本书,于是从网盘里 down 下了这本电子书。 书的整体情况 300 页,在计算机类书籍里,算比较薄的。但里面的内容都是一个个经典案例,配了 bad code 与问题的修正。读完本书,大概花了 4-5 个小时。 书提到了这些知识模块: 创建和销毁对象 对象的通用..

ConstXiong 459

Vue3+Vite+Electron桌面应用开发:从零到打包的完整避坑指南

本文是一份详尽的Vue3+Vite+Electron桌面应用开发实战指南。文章从项目初始化、环境配置、主进程构建、Vite深度优化,到最终的打包配置与优化,系统性地讲解了使用现代前端技术栈开发跨平台桌面应用的完整流程,并重点分享了开发与打包过程中的常见“坑点”与解决方案,旨在帮助开发者高效构建稳定可交付的桌面端应用。

hh234的博客 109

告别‘小目标’丢失!手把手复现DNANet红外检测网络(PyTorch版)

本文详细介绍了如何使用PyTorch从零实现DNANet红外小目标检测网络,重点解析了DNIM模块和CSAM注意力机制的设计与实现。通过实战教程,帮助开发者解决红外小目标检测中的特征提取和训练调参难题,适用于军事侦察、安防监控等场景。

weixin_28701593的博客 253

《Effective Java》 读后感(一)

《Effective Java》这本书是我看过的第一本,每看一行字,我都收获很深的书。以至于让我才看到第九条,我就忍不住要来写读后感了。 我从来没有发现,Java创建或者销毁一个对象会这么的有艺术感。从静态工厂的使用技巧,到String对象的创建,优雅的代码让我一次次的体会到了Java语言设计者的强大,不过也让我的强迫症更加强迫了,看见了自己以前写过的不规范的代码,就忍不住想改,让我的代码中多出

Xieisabug 3390

编码约定的自由度:重新思考Hamming码在实际工程中的灵活应用

本文探讨Hamming码在实际工程中的灵活应用,突破标准实现的思维定式。通过分析不同编码约定的优缺点和资源受限环境下的设计权衡,展示如何根据嵌入式系统、通信协议等具体需求定制汉明码实现,优化编解码效率并降低硬件开销。

perl8的博客 178

Effective Java(第二版)读书笔记

ITeye一天不如一天了

我为码狂 257

AI系统架构设计实战:AI应用架构师的深度指南

核心概念:AI系统架构是指设计和组织人工智能系统各个组件(包括数据、算法、计算资源、集成接口等)的结构框架,以及这些组件之间的交互方式和原则。它为AI应用提供了技术蓝图,决定了系统的性能、可扩展性、可维护性和可靠性。数据的本质:数据是对客观事物的符号表示,是可识别的、抽象的符号。在AI系统中,数据不仅是输入,也是系统学习和改进的基础。数据就像AI系统的"燃料",其质量和数量直接决定了AI系统的能力边界。

AI天才研究院 1199

迪文屏【0】——从零搭建工程:图片显示、文本变量配置与串口数据交互实战

本文以迪文屏T5L系列为例,详细介绍了从零搭建HMI工程的完整流程。内容涵盖硬件软件准备、DGUS工程创建、背景图片显示、文本变量配置,并重点演示了如何通过串口指令实时修改屏幕数据变量,实现动态交互。旨在帮助开发者快速掌握迪文屏开发的核心步骤与数据交互方法。

alpha的博客 349

Effective Java读书笔记完结啦

Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. Background 看了历史, 写第一篇笔记居然是2016年的事情了, 中间半途而废搁置了好长时间, 去年生病的时候捡起来看了一些, 今年终于看完了. 做这个笔记的目的主要是为了个人学习, 把一本...

weixin_30432579的博客 163

经典损失函数——均方误差(MSE)和交叉熵误差(CEE)的python实现

损失函数(loss function)用来表示当前的神经网络对训练数据不拟合的程度。这个损失函数有很多,但是一般使用均方误差和交叉熵误差等。 1.均方误差(mean squared error) 先来看一下表达式: 用于将的求导结果变成,是神经网络的输出,是训练数据的标签值,k表示数据的维度。 用python实现: def MS...

Answer3664的博客 1万+

《Effective Java中文版》第二版 读书笔记

     《Effective java》第二版基于Jdk1.5,虽然现在最新的jdk是jdk10,但书中内容主要介绍的是Java的一些编程规范、java编程思想,所以依然值得大家去读,可供大家学习的地方还很多。以下是自己对这本书的一些总结,由于篇幅原因,只做简单介绍,让大家知道有这么一个概念。    正如书的引言所说,本书的目的是帮助读者最有效地使用Java程序设计语言及其基本类库:java.l...

言必信,行必果 1202

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Effective Java读书笔记

Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. Background 看了历史, 写第一篇笔记居然是2016年的事情了, 中间半途而废搁置了好长时间, 去年生病的时候捡起来看了一些, 今年终于看完了. 做这个笔记的目的主要是为了个人学习, 把一本书...

weixin_34195546的博客 144

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《Effective java》第二版阅读笔记

18.接口优于抽象类 接口和抽象类都是java中定义类型、扩展功能的机制。 两者主要区别在于接口中全部是抽象方法,抽象类中可以包含抽象方法,也可以包含非抽象方法。 而接口优于抽象类的原因是,类可以实现多个接口,但只能继承一个抽象类,抽象类的使用受限。 假使对一个类进行扩展功能,可在implements后新增接口实现,如Comparable引进到java中后,更新了许多现有类。同时接口也是mixin...

张晨雪的博客 664

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Effective Java 读书笔记

Effective Java 读书笔记

SteveJrong's Blog 1165

《Effective Java》中文版第3版 读书笔记

人真的不必逼自己去做不像自己的那种人,强大固然是好,但脆弱和柔软也没有什么过错。一个人不用活得像一支队伍,一个人只要活得像一个人就行了,有尊严,有追求,有梦想,也有软弱和颓废的时候。 -- 知乎

山河已无恙 2685

《Effective Java中文版第二版》读书笔记

说明 这里是阅读《Effective Java中文版第二版》的读书笔记,这里会记录一些个人感觉稍微有些重要的内容,方便以后查阅,可能会因为个人实力原因导致理解有误,若有发现欢迎指出。一些个人还不理解的会用斜线标注。 第一章是引言,所以跳过。 第二章 创建和销毁对象 第1条:考虑用静态工厂方法代替构造器 含义 静态工厂方法是指一个返回类的实例的静态方法,例如: public static ...

weixin_30437481的博客 165

《Effective Java》读书笔记

优先使用接口、泛型、静态工具类...

qq_43336396的博客 750

《Thinking In Java》 VS 《Effective Java》 VS 《深入理解Java虚拟机》

今天刚考完试,在5天以前的前4个月时间里,我很庆幸自己选了一个看书的学习途径。从上个学期的暑假到现学期的11周里面,读了《Thinking In Java》、《深入理解Java虚拟机》和《Effective Java》,感悟颇多。首先先说明一下,我以前是看视频学习的,就做过两三个学校的网站,都已经上线在使用。没做过什么特别高大上的东西,所以我是处在新手的角度去读书的,我也知道自己的理解很浅,不

小浩子的博客 2万+

Effective Java 第二版读书笔记

【本文对许久前转载的部分过时博文进行了替换,所以发表时间可以不参考】 本篇学习笔记为通读Effective Java 第二版后总结的主要篇幅,不涉及太多繁冗的描述性内容,在此补充一下。对规则的具体应用场景,可结合使用时的具体情况灵活而定,适合的才是最好的,以下为主要描述:NO.1、考虑用静态工厂方法代替构造函数,即通过工厂方法获得实例而非 new () (1)好处 ...

WebWalker 1772

Effective Java读书笔记一

最近开始读Joshua Bloch的Effective Java的第二版,打算花一些时间把它看完。记得上一次读它的第一版还是在大学的时候,转眼间已经是4年之久了。上次因为各种原因并没有把第一版看完,所以这次一定要好好的读一下它的第二版。废话少说,今天看了它的第二章:Creating and Destroying Objects(第一章是介绍),这一章包含了7个条目:一、使用static factory methods(静态工厂方法)代替构造函数static factory methods和Factory M

netHibernate的专栏 2366

《Effective Java》读书笔记一

优先考虑依赖注入来引用资源可以使代码更加灵活、可测试和易于维护,是一种有效的设计实践。

qq_41831136的博客 773
上一篇: Thread.yield的中文API文档引起的一个误解
下一篇: 今天上去去看一个潜在的合作伙伴,下午也许回天津了
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值