[Java高效编程指南.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[Java高效编程指南

JAVA高效编程指南 创建和销毁对象 考虑用静态工厂方法替代构造函数 如: public static Boolean valueOf(boolean b){ return (b?Boolean.TRUE:Boolean.False); } 优势: 它们具有自己的名字 不需要在每次调用时都去创建一个新的对象 可以返回任何子类型的对象 使用私有构造函数强化singleton属性 singleton类就是一种只能被实例化一次的简单类。这种类型典型地被用来表示那些本性上具有唯一特性的系统组件,如:JNDI的name查找器。 具体例子参见:com.zte.resmaster.helpers.NamingHelper 用私有构造函数强化不可实例化能力 有些工具类不希望被实例化:对它进行实例化没有意义。如:java.lang.Math。然而在类中缺少显式构造函数的时候,编译器会自动地提供一个公共的无参数的缺省构造函数。在类中包含显式的私有类型构造函数来实现类的不可实例化特性。因为构造函数是私有的,所以它在类的外部不可访问。如果构造函数不会被类自身从内部调用,即能保证类永远不会被实例化。 避免创建重复对象 String s= new String(guojun);//永远不要这么干! Strong s = guojun;//可以接受的改进 消除对过期对象的引用 一旦一个对象的引用被不小心地保留,不仅这个对象被排除在垃圾回收之外。而且所有被这个对象引用的对象也不会被垃圾收集,并顺延下去。 一旦对象过期,清除资源以及对它们的引用。尤其自己的程序管理某些对象时,尤其如此。如类中使用对象数组,HashMap 等等。 对象定义 重载equals时要遵守的约定 满足下面的条件就不要重载: 每个类实例本质上是唯一的 不关心类是否提供了“逻辑意义的等同“测试 超类已经重载了equals,而超类继承的行为适合该类 类是私有的或是或是包内私有的,而且可以确定它的equals方法永远不会被调用。 当类有逻辑上的等同意义而不仅仅是对象意义上的等同,而且超类没有重载equals方法以实现期望的行为,这时需要重载。这种情形通常是数值类型的类(Value Object)。这时,equals的重载不仅对满足程序员的需要是必须的,它也能使类实例通过可预知的,期望的行为来做map关键字或set元素,以及Collection中的访问。 重载equals时永远重载hashCode 在EntityBean中的关键字对象,必须这么做,否则程序会出现编译错误。 永远重载toString() 推荐所有的子类重载这个方法,当对象传递给println方法/串的连接操作(+)时,toString()方法会自动调用。附加效果:有利于调试。 如:定义一个人井对象,在toString()中返回人井名称或是编码,那么当调用参数或是返回值为人井对象时,你无需做其他编码,就能在Jbuilder中看到EJB调用时的人井的toString()产生的信息。 谨慎重载clone 类和接口 最小化类和成员的可访问能力 隐藏模块的内部数据和实现细节,仅仅把该暴露的部分暴露给调用者。这也是OO三概念之一:封装。 如果把某些不应该暴露的方法暴露给调用者,一旦某个调用者使用了它,那么为了保证程序兼容,你就得继续提供对该方法的支持。 访问性: 私有(private) 仅在类内部可访问 缺省的(default) 对包内的所有类可访问(注意:没有default的关键字,当没有指明任何修饰符时,就是这种类型) 受保护的(protected) 该类的子类和包内所有类可访问 公共的(public) 访问不受限制 子类重载父类的方法,子类中方法的访问能力不能低于父类中该方法的访问能力;否则编译器产生编译错误。 组合优于继承 当确实需要继承时才采用继承,否则使用类组合来完成。 接口优于抽象类 两种机制最明显的区别是抽象类容许包含某些方法的实现,而接口不行。 如:com.zte.resmaster.helpers.AbstractDAOImpl,就是抽象类,它具有得到数据库连接和清除数据库资源的方法,但是怎么实现具体的DAO操作必须是其子类实现。 如果设计成抽象类,一旦子类要求继承其他类时就没有办法实现,因为Java中不能多重继承(extends),但是可以多重实现(implements)。换句话说就是接口是定义混合类型的理想选择。 接口允许非层次类型框架的构造。 接口通过封装类方式,能够获得安全、强大的功能。 当然抽象类有另一个优势:改进抽象类比改进接口更加容易。一旦某个方法的实现发生了变化,仅仅需要更改一个地方;当新加一个方法时,所有子

文档评论(0)

zhuanyewd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档