您的位置:首页 > 编程语言 > Java开发

Java静态导入(import static)

2016-05-23 11:41 267 查看
junit测试相关代码,经常用到java 静态导入,下面简单描述java的这个特性。从Java 5 开始引入了静态导入语法(import static),其目是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序。我们先来看一个不使用静态导入的例子,也就是一般导入:

public class MathUtils{

    // 计算圆面积

    public static double calCircleArea(double r){

        return Math.PI * r * r;

    }

    // 计算球面积

    public static double calBallArea(double r){

        return 4* Math.PI * r * r;

    }

}

这是很简单的数学工具类,我们在这两个计算面积的方法中都引入了java.lang.Math 类(该类是默认导入的)中的PI(圆周率)常量,而Math 这个类写在这里有点多余,特别是如果MathUtils 中的方法比较多时,如果每次都要敲入Math 这个类,繁琐且多余,静态导入可解决此类问题,使用静态导入后的程序如下:

import static java.lang.Math.PI;

public class MathUtils{

    // 计算圆面积

    public static double calCircleArea(double r){

        return PI * r * r;

    }

    // 计算球面积

    public static double calBallArea(double r){

        return 4 * PI * r * r;

    }

}

静态导入的作用是把Math 类中的PI 常量引入到本类中,这会使程序更简单,更容易阅读,只要看到PI 就知道这是圆周率,不用每次都要把类名写全了。但是,滥用静态导入会使程序更难阅读,更难维护。一般要遵循两个规则:
不使用*(星号)通配符,除非是导入静态常量类(只包含常量的类或接口)。
方法名是具有明确、清晰表象意义的工具类。

下面是JUnit 4 中使用的静态导入的例子,代码如下:

import static org.junit.Assert.*;

public class DaoTest {

    @Test

    public void testInsert(){

        // 断言

        assertEquals("foo", "foo");

        assertFalse(Boolean.FALSE);

    }

}

我们从程序中很容易判断出assertEquals 方法是用来断言两个值是否相等的,assertFalse方法则是断言表达式为假,如此确实减少了代码量,而且代码的可读性也提高了,这也是静态导入用到正确地方所带来的好处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: