Effective Java笔记
文章平均质量分 56
飞天猪23
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
EffectiveJava之14-复合优于继承
1、 继承打破了封装性。即一个子类依赖于超类中特定功能的实现细节,此时,更改超类则可能导致子类被打破。2、 小心继承个类,其中有“自用性”这样的实现细节,则导致该类脆弱,得到错误的结果。比如 class xxx extends HashSet{Publicboolean add(Object o){… return super.add(o);}Publicboolean add原创 2014-11-23 16:04:36 · 684 阅读 · 0 评论 -
EffectiveJava之13-支持非可变性
1、 非可变类要遵循的5条规则:a) 不要提供任何可能会修改对象的方法;b) 保证没有可以被子类修改的方法;c) 使所有域都为final的;d) 使所有的域都成为私有;e) 保证对任何的可变组件的互斥访问。(如果类中有可变对象的引用,则要保证客户无法得到这些对象的引用,并且不要用客户提供的对象来初始化这些域原创 2014-11-23 16:02:03 · 415 阅读 · 0 评论 -
EffectiveJava之18-优先考虑静态成员类
1、 静态成员类与非静态成员类的唯一区别是:静态成员类的声明中包含static修饰符。2、 非静态成员类的每一个实例有隐含着与外围类的一个外围实例(enclosing instance)3、 在没有外围实例的情况下,创建一个非静态成员类的实例是不可能的4、 Public class MySet extends AbstractSet{ Public Iterator itera原创 2014-11-23 16:07:03 · 489 阅读 · 0 评论 -
EffectiveJava之19-用类层次代替联合
1、 C中的联合体:typedef enum {RECT , CIRC} shape_type typedef struct { double length; double width;}rectangleDimensions_t typedef struct { double radius;}circ原创 2014-11-23 16:07:59 · 424 阅读 · 0 评论 -
EffectiveJava之25-谨慎设计方法的原型
1、 对于参数类型,优先使用接口而非类只要存在可用来定义参数的适当接口,就优先使用这个接口,而不是实现该接口的类。Eg. 没有理由在编写一个法方时使用HashTable作为输入, 用过使用Map 。 这样就可以使得我们传入一个HashTable, HashMap, TreeMap , 的字映射表(submap),也可以传入Map的实现。2、 谨慎的使用函数对象创建函数对象得最容原创 2014-11-23 16:10:47 · 457 阅读 · 0 评论 -
EffectiveJava之15、17、24、29、32
15-要么专为继承设计,否则不允许继承17-接口只是被用于定义类型1、 为了编出更有效的子类,一个类必须通过某种形式提供适当的钩子,以便能够进入到它的内部工作流程中。 2、 为了允许继承,构造函数一定不能调用能被改写的方法。原创 2014-11-23 16:12:36 · 603 阅读 · 0 评论 -
EffectiveJava之16-★接口优于抽象类
1、 Mixin(混合类型):一个类出了实现它的“基本类型”之外,还可以实现这个mixin类型,以表明他提供了某些可供选择的行为。---用接口来定义,抽象类不能。2、 他允许可选的功能被混合到一个类型的基本功能中。3、 接口可以是我们构造出非层次结构的类型框架。但有些事物不能整齐的组织成一个严格的层次结构。 比如 歌唱家 和 作曲家。Public interface Singer{原创 2014-11-23 16:05:34 · 466 阅读 · 0 评论 -
EffectiveJava之10-谨慎改写clone
1、实际上,clone 方法是另一个构造函数;你必须确保它不会伤害到原始的对象,并且能正确的建立起被克隆对象中的约束关系。 2、clone结构域指向可变对象的final域的正常用法不兼容。 3、若对一个散列表编写clone(),其内部数据是散列桶数组组成,呢个散列桶都指向“K--V”。虽然被克隆的对象有它自己的散列桶数组,但,这个数组引用的列表与原始对象是一样的,从原创 2014-11-23 16:09:16 · 398 阅读 · 0 评论
分享