Java静态导入(import static)

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方法则是断言表达式为假,如此确实减少了代码量,而且代码的可读性也提高了,这也是静态导入用到正确地方所带来的好处。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 5之前,我们使用import语句来导入类,方法或者常量。但是,在Java 5中,Java引入了静态导入import static)的概念,使得我们可以直接使用某个类的静态方法或常量,而不必再使用类名或者实例去访问它们。 静态导入的基本语法为:`import static package.classname.*;` 或 `import static package.classname.methodName;`。 下面我们来详细解析一下静态导入的使用方法和注意事项: 1. 静态导入方法 静态导入方法的基本语法为:`import static 包名.类名.方法名;` 例如,我们可以使用以下语句导入Math类的sqrt方法: ``` import static java.lang.Math.sqrt; ``` 这样我们就可以直接使用sqrt方法,而不需要再通过类名Math来调用它: ``` double result = sqrt(16); ``` 2. 静态导入常量 静态导入常量的基本语法为:`import static 包名.类名.常量名;` 例如,我们可以使用以下语句导入Color类的RED常量: ``` import static java.awt.Color.RED; ``` 这样我们就可以直接使用RED常量,而不需要再通过类名Color来访问它: ``` JButton button = new JButton("Click me!"); button.setForeground(RED); ``` 3. 静态导入类的静态方法 静态导入类的静态方法的基本语法为:`import static 包名.类名.方法名;` 例如,我们可以使用以下语句导入Arrays类的sort方法: ``` import static java.util.Arrays.sort; ``` 这样我们就可以直接使用sort方法,而不需要再通过类名Arrays来调用它: ``` int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}; sort(arr); ``` 4. 静态导入的注意事项 虽然使用静态导入可以减少代码量,但是在实际开发中还是需要注意以下几点: - 静态导入应该只用于导入静态方法和静态常量,不应该用于导入静态成员变量和非静态方法。 - 静态导入可能会导致代码可读性降低,因为读者无法准确判断某个方法或常量的来源。 - 静态导入的语句应该尽量少,只导入使用频繁的变量或方法,不应该导入过多的变量或方法,否则会导致程序可读性降低。 - 如果要使用多个静态导入,应该将它们分别放在不同的语句中,而不应该使用通配符导入所有的静态变量和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值