随笔分类 -  Java-Thinking

摘要:Java1.5发行版本中增加了泛型(Generic)。在没有泛型之前,从集合中读取到的每一个对象都必须进行转换。如果有人不小心插入了错误的类型对象,在运行时的转换处理就会出错。有了泛型之后,可以告诉编译器每个集合中接受哪些对象类型,编译器自动地为你的插入进行转化,并在编译时告知是否插入了类型错误的对象。这样可以使程序更加安全,也更加清楚。No23 请不要在新代码中使用原生态类型术语示例所在条目参数化的类型List实际类型参数String泛型List形式类型参数E无限制通配符类型List原生态类型List有限制类型参数递归类型限制>有限制通配符类型List泛型方法static List a 阅读全文
posted @ 2013-08-08 11:48 那些年的事儿 阅读(589) 评论(0) 推荐(0)
摘要:No13 使类和成员的可访问性最小化要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节。模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况。这个概念被称为信息隐藏(infomation hiding)或封装(encapsulation),是软件设计的基本原则之一。对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别:包级别的(package-private)。公有的(public)。对于成员(域、方法、嵌套类和嵌套接口)有四种可能的访问级别:私有的(private)。包级私有的(package-p 阅读全文
posted @ 2013-08-08 11:40 那些年的事儿 阅读(338) 评论(0) 推荐(0)
摘要:No8 覆盖equals方法时请遵守通用约定通用约定,下面的约定前提都是x/y/z不为null值。自反性(reflexive),x.equals(x)必须返回true。对称性(symmetric),当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。传递性(transitive),如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也必须返回true。一致性(consistent),信息没有修改的情况下,多次调用x.equals(y)的返回结果必须一致。x.equals(null)必须返回false。诀窍 阅读全文
posted @ 2013-08-08 11:31 那些年的事儿 阅读(439) 评论(0) 推荐(0)
摘要:No1 考虑用静态工厂方法代替构造器静态工厂方法优势:它们有名称,阅读性增强,如:BigInteger.probablePrime;不必每次调用它们的时候都创建一个新对象;它们可以返回原返回类型的任何子类型的对象;在创建参数化类型实例的时候,它们使代码变得更加简洁。静态工厂方法缺点:类如果不含公有的或者受保护的构造器,就不能被子类化;它们与其他的静态方法实际上没有任何区别。惯用名称:getInstance 返回的实例是通过方法的参数来描述的;newInstance 像getInstance一样,但newInstance能够确保返回的每个实例都与所有其它实例不同。No2 遇到多个构造器参数时要考 阅读全文
posted @ 2013-08-08 11:23 那些年的事儿 阅读(402) 评论(0) 推荐(0)