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

java静态导入

2017-11-23 12:33 246 查看
一、静态导入
      在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。当你想使用static成员时,可以使用静态导入(在API中的类和你自己的类上,都可以使用该特性)。

静态导入前代码实例:

public class Static {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.toHexString(42));
}
}


静态导入后的代码实例:

import static java.lang.System.out;
import static java.lang.Integer.*;

public class StaticImport {
public static void main(String[] args) {
out.println(MAX_VALUE);
out.println(toHexString(18));
}
}


 

静态导入常例

package cn.edu.scau.mk.testdemo;

import static java.lang.System.out;
import static java.lang.System.*;
/**
*
* @author MK
*/
public class TestDemo {

public static void main(String[] args) {
out.println("out");
err.println("err");
}
}


 

二、静态导入的规则

滥用静态导入实例

import static java.lang.Double.*;
import static java.lang.Math.*;
import static java.lang.Integer.*;
import static java.text.NumberFormat.*;
public class Client {
// 输入半径和精度要求,计算面积
public static void main(String[] args) {
double s = PI * parseDouble(args[0]);
NumberFormat nf = getInstance();
nf.setMaximumFractionDigits(parseInt(args[1]));
formatMessage(nf.format(s));
}
// 格式化消息输出
public static void formatMessage(String s){
System.out.println(" 圆面积是:"+s);
}
}


对于静态导入,一定要遵循两个规则:

不使用*(星号)通配符,除非是导入静态常量类(只包含常量的类或接口)。

方法名是具有明确、清晰表象意义的工具类。

 

具有明确、清晰表象意义的工具类,JUnit 4 中使用的静态导入的例子

import static org.junit.Assert.*;
public class DaoTest {
@Test
public void testInsert(){
// 断言
assertEquals("foo", "foo");
assertFalse(Boolean.FALSE);
}
}


 

使用静态导入的几条原则:

你必须说import static, 不能说static import。

提防含糊不清的命名static成员。例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。

你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: