当前位置: 首页 > news >正文

java 静态导入

转自:http://www.java3z.com/cwbwebhome/article/article2/21168.html

在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.     } 

在静态导入之后:

 
  1. import static java.lang.System.out; 
  2. import static java.lang.Integer.*; 
  3.  
  4. public class TestStaticImport { 
  5.     public static void main(String[] args) { 
  6.         out.println(MAX_VALUE); 
  7.         out.println(toHexString(42)); 
  8.     } 
  9. }
两个类都产生相同的输出:
 
  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方法上进行静态导入。

 

相关文章:

  • 【bzoj3673】可持久化并查集 by zky
  • HashSet序列化问题
  • QT学习之路--菜单、工具条、状态栏
  • 序列化-理解readResolve()
  • Java thread的Interrupt, isInterrupt, interrupted
  • Java字符串
  • Java集合的Stack、Queue、Map的遍历
  • Java正则表达式应用总结
  • javascript的基础知识整理
  • 运行Java应用必须通过main()方法吗?
  • struts2标签库详解
  • Servlet技术总结
  • 深入研究servlet的线程安全问题
  • win10下 Edge和IE浏览器都不能上网,而其他浏览器可以。怎么办?
  • Servlet过滤器机制分析及应用
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • DataBase in Android
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • express + mock 让前后台并行开发
  • golang 发送GET和POST示例
  • leetcode-27. Remove Element
  • PHP面试之三:MySQL数据库
  • Sass Day-01
  • WePY 在小程序性能调优上做出的探究
  • 服务器之间,相同帐号,实现免密钥登录
  • 基于axios的vue插件,让http请求更简单
  • 记一次和乔布斯合作最难忘的经历
  • 将回调地狱按在地上摩擦的Promise
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 我的zsh配置, 2019最新方案
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #define 用法
  • #etcd#安装时出错
  • #宝哥教你#查看jquery绑定的事件函数
  • (4)事件处理——(7)简单事件(Simple events)
  • (52)只出现一次的数字III
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (TOJ2804)Even? Odd?
  • (多级缓存)缓存同步
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (一)RocketMQ初步认识
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net core开源商城系统源码,支持可视化布局小程序
  • .net6Api后台+uniapp导出Excel
  • .Net组件程序设计之线程、并发管理(一)
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @RequestMapping-占位符映射
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • @我的前任是个极品 微博分析
  • @在php中起什么作用?
  • [ 数据结构 - C++]红黑树RBTree
  • [].shift.call( arguments ) 和 [].slice.call( arguments )