您的位置:首页 >> 编程开发 >> Java >> J2EE >> 正文
RSS
 

实战JDK 5

http://www.rdxx.com 05年08月10日 20:36 Java频道 我要投稿

关键词: JDK

  我从事JDK 5.0代码的编写工作已经有六个月之久了,我认为有必要花一点时间回顾一下我的编码经验,对该软件所介绍的功能进行总结。

增强的for循环

  作为无可争议的嬴家,新的for循环无论在何处(几乎在任何地方)都非常好用,因此我激动得不知如何开始描述。当我被迫使用旧式for循环的时候,特别是需要使用索引或需要让迭代程序在循环之外可见的时候,我的内心深处屡屡畏缩。

  代码具有很好的可读性,并且给人的感觉一点也不繁杂(例如,索引不需要的代码或增量公开基础实现)。后面一点是新循环的意外收获。试想一下,有如下代码:

String[] names = ...;for (String name :names) {  // ...}
  您决定把名称类型改为Collection。如何修改代码?
List names = ...;for (String name : names) {  // ...}

  仅修改一行就可以了。这就是它的独特优点。

注释

  显然,我对注释的了解还具有一定局限性,因为它们位于TestNG的核心位置;但是,我坚信注释行将改变我们使用Java构建软件的方式。长期以来,我们在程序中引入元数据一直依靠的是对黑客做出的反应,注释最终将对此问题提供卓越的解决方案。

  此外,我有一个感觉,就是使用某些预定义的注释(如@Override)是没有必要的,所以在这一点上我一直没有形成自己的意见。

  在未来的若干年里,对我来说一个无法逃避的现实是,我们阅读和编写的大多数Java代码都将包含注释。

静态导入

  除了在Retention 和 Target类型中,我几乎不使用它们。至今还没有人能说服我,添加此功能的本来意图(阻止实现接口的反模式,且无需限定就能重用其常量)证明应该引入新的语言功能,这要让时间说话。

  我猜想,从某些方面来说,在我日常编程中使用的IDE完全废弃了导入功能,所以我对这一功能已经没有什么感觉了。

可变长度参数

  迄今为止,我从来不需要此功能。有时它可能用起来很方便,但是我真的不相信这种功能确保语言中的改变是正确的。

Enum

  理论上,我对Enum持肯定的态度,但是我还没有真正把我的代码转换为Enum,所以我不了解它们的使用效果。我相信如果使用它们效果会很好,将使代码更加健壮。

Generic

  把最好的留到最后……但是因为本条目有点长,我将把对Generic的讨论留作明天的话题。

Autoboxing

  到目前为止,我还从来没有使用过autoboxing功能,因为我对于代码性能失去控制没有明确的感觉。尽管autoboxing是一种未经证明的功能,它用起来方便,并且可以让代码更具有可读性。我想我应该鼓励开发人员在使用autoboxing时为代码做上标记;我敢肯定IDE的开发人员不久也会这样做。

Generic

 说在前面的话。

  首先,无可置疑,Generic是一个可能使代码更加健壮的可靠概念。因为它具有可执行性,所以通常抛开具体语言对其进行讨论。多年来作为C++委员会的成员,我清楚地感觉到正确使用它们决非易事。

  简言之,对Java generics我用下面的话来进行说明:代码比以前健壮,但更加难以阅读。

  那么,问题何在?

  冗余。

  首先,把一般的强制转换需求引入冗余,对此问题我感觉很棘手。例如,为什么不能不编写:

Map accounts = new HashMap();  // no generics...Account a = (Account) accounts.get("Cedric");
  而编写:
Map m = new HashMap();  // no generics...Account a = m.get("Cedric");

  来代替,同时让编译器引入一种静默强制转换模式?因为很显然,它是一个我试图从Map中检索的Account类型的对象。


  显然,Generic不能完全解决这个问题,只是在一定程度上有帮助而已。可是,在另外一些方面,它们却有害无益:

Map<String, List<Account>> accounts =  new HashMap<String, List<Account>>();
上一页 下一页

 
 
标签: JDK 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站