http://www.javayou.com (收藏,设为首页)
当你不能再拥有时,你唯一能做的,就是让自己不要忘记 (手机请访问 http://3g.dlog.cn/javayou)

静态引入 J2SE5连载四

2005年2月1日(Tuesday) 12点50分 作者: 本站原创 天气: 心情: 一般

静态引入,属于语法改良,即经过使用改良的import引入,就可以直接使用引入类中的静态方法和静态变量和常量,不再需要在每个引用的静态方法或静态变量前加上引自的类名。

我们常用的静态调用,都必须在引用前加上静态方法或类的类名,如Calendar.getInstance(); Array.get(...),而J2SE5之后,只要更改把原来的引入写法由:import A; 更改为 import static A.*; 则就可以直接使用A类中的静态方法和变量了。

具体的例子如下,我们先创建一个提供静态方法、变量的类,供其他类进行调用:

 

package javayou.demo.j2se5;
public class StaticClass {
    public static String NAME = "StaticClass";
    public static void print(String str) {
        System.out.println("[staticClass] "+str);
    }
}

而在主调用类里,通过静态引入,就可以把StaticClass里定义的静态方法和变量当成是自己的方法和变量来直接调用:

package javayou.demo.j2se5;
import java.util.Calendar;
import static java.util.Calendar.*;
import static javayou.demo.j2se5.StaticClass.*;
/**
 * @author Liang.xf
 * 静态引入举例
 */
public class StaticImportSample {
    public static void main(String[] args) { 
        Calendar cal = getInstance();
        cal.add(1, MONTH);
        print("StaticImportSample params.");
        print("你好测试例子.");
        print(NAME);
    }
}

输出:

[staticClass] StaticImportSample params.
[staticClass] 你好测试例子.
[staticClass] StaticClass

此处要注意的是,如果StaticImportSample 也定义有和StaticClass.test一样的静态方法时

,将会使用StaticImportSample自己定义的方法,如果想使用StaticClass的,则还必须向之

前一样,加上应用类名,以起到区分上下文的作用。

标签: j2se 
评论者: 刘冬 2005-2-1 13:45 (Tuesday)

其实静态导入是为了解决这样一个问题:

以前我们经常把常量定义在一个接口上,然后类为了引用这些常量只需要实现这个接口就可以直接引用,这种做法是不好的,至于为什么不好仁者见仁、智者见智。因此JDK 5.0新增了静态导入的做法: 还是把常量定义在接口上,但是需要引用这些常量的类不再实现这个接口,而是采用静态导入该接口,从而实现对常量的方法。

评论者: 梁夏峰 2005-2-1 17:45 (Tuesday)
这是个很好的用法,但也要注意用得太频繁,将会有出其不意的混乱出现。
姓名: 
邮箱:  {可选}
网址:  {可选} 此评论只有我和写日记的人查阅
校验码: ... <我看不清楚>
网记为您提供手机和互联网同步的个人主页,带给你不一样的体验