JAVA学习网首页 把生活查询网加入收藏 把JAVA学习网设为首页 联系方式
    Hi,JAVA学习
JAVA基础 设计模式 数据库 JavaBeans J2EE JavaDelphi 用户界面 综合文章  
jdk1.5之五 —— import static members
时间:22/04/2007
作者:网络
来源:网络
小提示点这里把文章加入您的收藏夹,方便下次查看
设置文章字体大小:[ ]

技术的进步往往缘自于人类的懒惰——至少软件业是如此


——Fantasy Dog

import的作用有两个:简化输入和方便阅读。前者成全了coder的懒惰,后者成全了读者的。

我们一直觉得把java.util.ArrayList写成ArrayList是一件很幸福的事情(除了那些希望用连续的噼里啪啦的键盘声装酷或者装做努力工作的人,然则写软件大部分时间是要思考的,手指太快只能做打字员,或者怪sdk要用户输入的太多),但是对于System.out.println恨之入骨却又万般无奈。更不幸的是,System.out.println通常用的比ArrayList多的多,特别是在test code里。
有了import static,生活环境又有了点起色。我们终于可以import某个类的某个静态成员或所有静态成员,而不用写类名了——现在看来是理所当然的事。public的某个static成员通常与类没有太大关系,仅仅是为了分门别类而被安排在这个类里,抛开束缚的感觉真好。
***注意这个static。非static的成员是不能被引用的,比如我们如果想更进一步抛开out直接写println,技术上并非不可能实现,但是这违背了面向对象的原则:非静态方法是与某个object交流的接口,离开了object,这个接口毫无意义。

成员包括了变量和方法,因此import static一个方法也是可以的。但是,方法是可以重载的。如下:
import static java.util.Arrays.sort;
我怎么知道这是import了哪一个sort方法呢?

实际上,这import了所有叫sort的方法。import static引进的是name,而非name所指代的某个具体的member。对于变量,一个变量名只能用来指代一个变量,因此这个区别无伤大雅。可是对于方法就不同了。import的作用就是告诉编译器,当你遇到无法解析的(can't be resolved)名字时,去某个路径找。所以当编译器遇到sort后,就在java.util.Arrays下找到了sort这个名字,然后再找是否有匹配的函数。结果以下的奇怪东西就有意思了:
import static java.util.Arrays.sort;
import static java.util.Collections.sort;
两个sort毫无冲突,因为这两个类没有相同的sort函数,邻里融洽。

java是没有如c一般的全局函数或变量的,因此用public的static成员解决了这个问题。有些牵强,也属无奈。而import static,只怕也是无奈中的无奈了吧。


上一篇:Java学习从入门到精通

下一篇:Shark工作流文档翻译活动--Shark(1)

  • 今日笔记系列之Castor
  • Application和Applet各自指什么?
  • 优化apache/tomcat配置
  • wonderful learning website for java development
  • JSP和Struts解决用户退出问题
  • 用JAVA实现Undo、Redo,Copy、Paste、Cut
  • J2ME 走向成熟
  • 对JavaHotSpot性能引擎的深入研究
  • 用Java实现的设计模式系列(3)--Builder
  • Tomcat环境下配置oracle数据源的方法
  • 最近使用JTest,总结一下经验,和大家交流
  • Struts在Apusic上的安装
  • 自定义事件与监听器
  • 在struts中使用国际化(i18n)
  • The way to dynamic validate xml against DTD
  • Resin2.1.12的数据库连接池配置
  • 使用SOAP开发java web服务
  • Java语言入门--第九章Java的输入输出操作
  • 返回】 【顶部】 【关闭
    Copyright © 2005-2010 www.594k.com All Rights Reserved.
    版权所有:JAVA学习网 备案序号:皖ICP备06004238号