在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。

当你想使用static成员时,可以使用静态导入(在API中的类和你自己的类上,都可以使用该特性)。下面是静态导入前后的代码实例:

在静态导入之前:

  1. public class TestStatic {
  2. public static void main(String[] args) {
  3. System.out.println(Integer.MAX_VALUE);
  4. System.out.println(Integer.toHexString(42));
  5. }
  6. }
在静态导入之后:

import static java.lang.System.out; 

  1. import static java.lang.Integer.*;
  2. public class TestStaticImport {
  3. public static void main(String[] args) {
  4. out.println(MAX_VALUE);
  5. out.println(toHexString(42));
  6. }
  7. }
两个类都产生相同的输出:
  1. 2147483647
  2. 2a
让我们看一下使用静态导入特性的代码中将发生什么:

1、虽然该特性通常称为“静态导入”,但语法必须是import static,后面跟你想导入的static成员的完全限定名称,或者通配符。在本例中,我们在System类的out对象上进行静态导入。

2、在本例中,我们可能想使用java.lang.Integer类的几个static成员。该静态导入语句使用通配符来表达“我想在此类中的所有静态成员上进行静态导入”。

3、现在我们终于看到静态导入特性的好处!我们不必在System.out.println中键入System。太好了!另外,我们不必在Integer.MAX_VALUE中键入Integer。因此,在这行代码中,我们能够将快捷方式用于静态方法和一个常量。

4、最后,我们进行更多的快捷操作,这次针对Integer类的方法。

关于该特性,我们已经有点儿讽刺意味儿了,但不仅我们是这样的。我们不认为节省少量的击键次数会让代码难于阅读一点,但许多开发人员要求将它添加到语言中。

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

  • 你必须说import static, 不能说static import。
  • 提防含糊不清的命名static成员。例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。
  • 你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入。

最新文章

  1. ASP.NET Core 之 Identity 入门(一)
  2. Python多进程(2)——mmap模块与mmap对象
  3. 基于数据库MySQL的简易学生信息管理系统
  4. 【转】java调用webservice
  5. location(未完)
  6. APP 接口开发及读取静态缓存
  7. CF 486D vailid set 树形DP
  8. Android实现Http协议案例
  9. codevs 1709 钉子和小球
  10. CodeForces 333A
  11. sublime text 按下Ctrl + B 显示空白的解决办法
  12. ROS_Kinetic_16 ubuntu中安装使用Matlab和ROS
  13. 菜鸟如何反转到资深Web安全工程师
  14. python关于二分查找
  15. <二>企业级开源仓库nexus3实战应用–使用nexus3配置docker私有仓库
  16. iphoneX适配!!!
  17. Oracle 19c使用dbca来搭建物理DG
  18. SpringSecurity-SecurityContextPersistenceFilter的作用
  19. javascript——获取列表选择行的列值
  20. 【转】一些linux基础命令

热门文章

  1. POCO库中文编程参考指南(5)Poco::Net::SocketAddress
  2. c/c++相关面试准备笔记1
  3. cordova学习:事件Events
  4. Centos7下zabbix部署(五)定义报警媒介-微信
  5. ios unit test 工程选择release时候报错Undefined symbols for architecture i386
  6. selenium 自动化测试 测试报告 生成
  7. Tomcat7.0源代码分析——启动与停止服务原理
  8. Scala和Java二种方式实战Spark Streaming开发
  9. 通过脚本发送zabbix微信报警
  10. 【ecshop---新增包邮卡功能】