自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FengvHaoDa的博客

11点半跟着灭绝小甜甜围攻光明顶

  • 博客(12)
  • 收藏
  • 关注

原创 词根252

S

2023-01-31 21:02:16 804

翻译 对象共有的方法(第十一条:当你重写EQUALS方法的时不要忘了重写HASHCODE方法)

你必须在重写equals方法中的每个类里面去重写hashCode方法。如果你没有做,你的类会违背hashCode的基本准则,这样就会导致这个类在像HashMap还有HashSet的集合中不能正确地工作。这儿有从Object声明里面所引用的约定:在程序运行期,如果一个对象的hashCode方法被重复调用,只要用于equals比较的任何信息没有被修改,那么它必须一直返回相同的值。如果从一个程序的执行到...

2018-04-28 15:00:02 173

翻译 对象共有的方法(第十条:当重写EQUALS的时候要遵守基本约定)

尽管Object是一个具体的类,但是它主要还是为了继承而设计出来的。所有的nonfinal的方法(equals , hashCode , toString , clone , and finalize)都有明确的一般性约束,因为它们设计出来就是为了被重写。任何重写这些方法的类都有责任去遵守它们的基本约束;不这样做的话,就会让联合使用它们的一些类(比如HashMap,HashSet)不能正常的工作。...

2018-04-26 11:25:57 574

翻译 创建销毁对象(第九条:比起TRY – FINALLY要更喜欢TRY -WITH-RESOURCES)

Java类库里面包含很多必须通过调用close方法手动关闭的资源。比如InputStream,OutputStream,和java.sql.Connection。关闭资源经常被客户端所忽视,情理之中也就导致了一些可怕的性能问题。尽管很多资源使用finalizers作为安全保障,但是finalizers却工作的不太好(Item 8)。以前,try – finally语句是保证资源被及时关闭的最好的方...

2018-04-17 18:06:54 225

翻译 创建销毁对象(第八条:杜绝使用FINALIZERS和CLEANERS)

Finalizers是不可预期的,通常很危险,并且基本没有必要。使用它们会引起行为怪异,性能变差,还有其他的一些小的问题。Finalizers是有一些有价值的用途的,这些我们后面会说,但是,你应该把避免使用它们作为一条准则。就Java 9而言,finalizers被摒弃了,但是Java类库仍然在使用它。Java9里面用cleaners来代替finalizers。比起finalizers而言,Cle...

2018-04-16 17:48:14 469

翻译 创建销毁对象(第七条:消除掉废弃的对象引用)

如果你从手动管理内存的语言比如C或者C++,转到垃圾收集语言比如java,那么基于垃圾自动回收机制,在用完一些对象以后,你作为开发人员的工作就会变的小了很多。如果你第一次经历这些,你会感觉好像magic一样。它很容易给你留下你不用去考虑内存管理的这种印象,但是这是不对的。考虑下面这个简单的栈的实现:// Can you spot the "memory leak"?public class St...

2018-04-12 16:22:21 314

翻译 创建销毁对象(第六条:避免创建不必要的对象)

通常来说,比起每次需要都去创建一个新的功能相同的对象,重用一个对象是更适合的。重用会让程序更快而且代码更好看。如果对象是不变的,那么它一直都是可以重用的(Item 17)。就不要去做的一个极端的例子,考虑下面的代码:Strings = new String("bikini"); // DON'T DO THIS!这个代码每次执行都会创建一个新的String实例,然而没有一次创建时必要的。Strin...

2018-04-10 18:06:18 261

翻译 创建销毁对象(第五条:推崇依赖注入而不是强硬地将资源组合起来)

许多类依赖一个或者多个基础的资源。比如,一个拼写检查器会依赖于一个字典。这种类用静态工具类(Item 4)来做是很常见的。//Inappropriate use of static utility - inflexible & untestable!public class SpellChecker { private static final Lexicon dictionar...

2018-04-09 16:41:53 204

翻译 创建销毁对象(第四条:使用私有的构造器来强制不可实例化)

有时候你可能回去写一种只包含一些静态方法或者静态成员参数的类。因为一些人为了避免就对象相关的一些考虑就滥用它们,所以这种类的名声不太好。但是它们确实是有用处的。照着java.lang.Math 或者 java.util.Arrays的样子,它们可以用来对操作基本类型的方法或者数组类型的方法去做分组。照着java.util.Collections的样子,对于实现了某些接口的对象而言,它们可以把静态方...

2018-04-09 09:31:13 196

翻译 创建销毁对象(第三条:使用私有的构造器或者枚举类型来保证单例)

单例就是一个类只能被实例化一次。单例通常代表无状态的对象比如function(Item 24),或者系统某一组件,从本质上讲,这种组件是唯一的。将一个类设置为单例会使测试它的客户端变得艰难。因为想要用一个mock的实现类去代替单例是不可能的,除非这个单例实现了一个充当单例类型的接口(不是很懂,个人猜测可能是这个接口是单例类的实现接口。原文unless it implements an interf...

2018-04-09 09:30:57 146

翻译 创建销毁对象(第二条:当面临多个构造器参数的时候考虑使用建造者)

第二条:当面临多个构造器参数的时候考虑使用建造者静态工厂和构造器都有一个不足:需要很多可选的参数时他们的扩展性不好。考虑下面一个类的情况,这个类代表了打包食物上面营养元素的标签。这些标签有一些必须的条目­-一份的大小,一罐多少份,一份多少卡,-还有超过20种的可选条目-总热量,饱和脂肪,反义脂肪,胆固醇,钠等等。大部分商品只会为一小部分条目设置为非零。这种类应该写什么样的构造器或者静态方法呢?传统...

2018-04-09 09:29:50 188

翻译 创建销毁对象(第一条:考虑静态工厂方法而非构造器)

第二章.创建销毁对象这一章主要关注创建和销毁对象:什么时候应该创建它们,该怎样创建它们,什么时候该避免创建它们,怎样避免创建它们。怎样保证他们在合适的情况下被销毁,怎么样来做一些发生在销毁对象之前的清理操作。 第一条:考虑静态工厂方法而非构造器对于一个类而言,允许客户端获取它的实例的传统方法是提供一个公共的构造方法。还有另一个方法应该成为每一个开发人员的开发技巧的一部分。这就是公共的静态工厂方法,...

2018-04-09 09:28:29 184

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除