Effective.Java第23-33条(泛型相关)】的更多相关文章

<<Effective Java>> 第四十三条:返回零长度的数组或者集合,而不是null 如果一个方法的返回值类型是集合或者数组 ,如果在方法内部需要返回的集合或者数组是零长度的,也就是没有实际对象在里面, 我们也应该放回一个零长度的数组或者集合,而不是返回null.如果返回了null,客户端程序员就要检测返回的是不是null,然后才能 进行下一步操作,否则就会引发NullPointException.但是如果是返回的的是空数组或者集合,就不会再后续的使用这个对象上,引发 空指针…
23.  类结构层次优于标签类 有时你会碰到一个类,它的实例有一个或多个风格,并且包含一个tag属性表示实例的风格.例如,如下面的类表示一个圆或者矩形: public class Figure { /** * 标签: circle表示圆 rectangle表示矩形 */ private String tag; private double length; private double width; private double radis; public Figure(double radis)…
第23条:请不要在新代码中使用原生态类型 声明中具有一个或者多个类型参数( type parameter)的类或者接口,就是泛型(generic)类或者接口. 每种泛型定义一组参数化的类型(parameterized type),构成格式为: 先是类或者接口的名称,接着用尖括号(<>)把对应于泛型形式类型参数的实际类型参数列表括起来.例如,List(读作"字符串列表")是一个参数化的类型,表示元素类型为String的列表. 最后点,每个泛型都定义一个原生态类型[raw ty…
Chapter 5 Generics Item 23: Don't use raw types in new code 虽然你可以把一个List<String>传给一个List类型(raw type)的参数,但你不应该这么做(因为允许这样只是为了兼容遗留代码),举个例子: // Uses raw type (List) - fails at runtime! public static void main(String[] args) { List<String> strings…
当使用函数作为一个构造函数时,程序依赖于调用者是否记得使用new操作符来调用该构造函数.注意:该函数假设接收者是一个全新的对象. 一个例子 function User(name,pwd){ this.name=name; this.pwd=pwd; } 当调用者,忘记使用new关键字时,那么这个函数的接收者是全局对象. var u=User('wengxuesong','asdfasdfadf'); u;//undefinedthis.name;//'wengxuesong'this.pwd;/…
对于类而言,为了让client获取它自身的一个实例,最经常使用的方法就是提供一个共同拥有的构造器. 另一种放你发,也应该子每一个程序猿的工具箱中占有一席之地.类能够提供一个共同拥有的静态 工厂方法.它仅仅是返回类的实例的静态方法. 类能够通过静态工厂方法类提供它的client(对象),而不是通过构造器.提这样做的优点有: 1.静态工厂方法与构造器不同的第一大优势在于.它们有名称.比方构造器BigInteger(int,int,Random)返回的BigInteger可能为素数,假设用名为BigI…
使用JAVA这门OO语言,第一要义就是,如果类不是专门设计来用于被继承的就尽量不要使用继承而应该使用组合 从上图2看,我们的类B复写了类A的add喝addALL方法,目的是每次调用的时候,我们就能统计调用类A的次数,实际上我们调用了一次类B 但是实例对象b的count变量却变成了2,解释的原因在图1里面我已经做了黑板画了,这个例子是effective Java里面的一条忠告,十分有意义, 少用继承,除非类是专门被用于来继承的,例如安卓开发里面的activity类是专门被设计用于继承的,这些类可以…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 33. 优先考虑类型安全的异构容器 泛型的常见用法包括集合,如Set <E>和Map <K,V>和单个元素容器,如ThreadLocal <T…
概要 本章是从<Effective Java>摘录整理出来的关于异常处理的几条建议.内容包括:第1条: 只针对不正常的情况才使用异常第2条: 对于可恢复的条件使用被检查的异常,对于程序错误使用运行时异常第3条: 避免不必要的使用被检查的异常第4条: 尽量使用标准的异常第5条: 抛出的异常要适合于相应的抽象第6条: 每个方法抛出的异常都要有文档第7条: 在细节消息中包含失败 -- 捕获消息第8条: 努力使失败保持原子性第9条: 不要忽略异常 它们对应原书中"第8章 异常"部分…
第 26 条:请不要使用原生态类型 声明中具有一个或多个类型参数的类或者接口,就是泛型(generic). 例如List接口只有单个类型参数E, 表示列表的元素类型.这个接口全称List<E>,泛型类和接口统称为泛型(generic type). 每一种泛型都定义一个原生态类型(raw type),即不带任何实际类型参数的泛型名称. 它的存在主要是为了兼容泛型之前的代码.   如果使用原生态类型,就失去了泛型在安全性和描述性方面的优势. 如果使用像List这样的原生态类型,就会失掉类型安全性,…