紫风乱写

除了他眼前的屏幕,这个人什么也没看见。
被周围的电脑簇拥着,他只知道他所创造的现实,但又意识到那是虚幻。
他已经超越了技术。也超越了机器。
posts - 62, comments - 93, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

关于java 5中的static import的一点讨论

Posted on 2005-09-11 20:15 Justfly Shi 阅读(1110) 评论(0)  编辑  收藏 所属分类: Study Tiger

在java5中添加的一个新特性就是static import(静态导入?)通过静态导入我们可以很方便的使用在其他类中定义的函数。如下面的代码所示,我们可以直接的使用java.lang.Math 的min和max以及其他在java.lang.Math中所定义的静态方法,只需要在import中添加一句import static java.lang.Math.*。这是一个很方便的功能。

package cn.justfly.study.tiger;

import 
static java.lang.Math.max;
import 
static java.lang.Math.min;
/**
 * Sample of Static Import
 * @author Justfly Shi
 * created at 2005-9-3 23:41:50
 
*/

public class StaticImport {

  
/**
   * @param args
   
*/

  
public static void main(String[] args) {
   
/*
    * min() and max() are defined in java.lang.Math as static method.
    * but they can now be easily access.
    * 
*/

   
int min=min(3,4);
   System.
out.println("min is : "+min);
   
int max=max(3,4);
   System.
out.println("max is : "+max);

  }


}


但是这个功能却不能滥用。因为它会导致代码的可读性变得很差。考虑一下一个未曾接触过java.lang.Math类的读者来看这段代码。当他读到“int min=min(3,4)”,他会很迷惑,这个min函数到底是在哪里定义的呢?于是他就得去分析import这里。这段代码还好说,只有一个类被静态导入,只需要打开 java.lang.Math的文档就可以直接了解这些方法的相关信息了。但是如果同时静态导入了10个类的情况下呢?如果这些类中有着名字类似(相同)但是行为却不一致的方法的时候呢?比如Person.eat(Food food)和 Animal.eat(Food food)。

那么这个功能该如何用呢?我认为一些常用的工具类、全局变量类等当需要在一个类中多次使用的时候可以导进来,但是对于系统中的模型类或者是用的次数不多的工具类还是不要导入的好。我们需要在自己写代码时的方便和代码本身的可读性间做个权衡。


只有注册用户登录后才能发表评论。


网站导航: