page contents

Java教程——Java为什么不推荐使用 import *导包

本文讲述了Java教程——Java为什么不推荐使用 import *导包!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2023-09-uKD583kK651235230ebe2.jpg本文讲述了Java教程——Java为什么不推荐使用 import *导包!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

最近在给 apache shardingsphere提代码的时候,有一个比较有意思的规范,就是不允许使用 import *去导入包

attachments-2023-09-glriQJ9k651234b3e47b4.jpg

import *

在自己开发认知中,其实一直都是使用的import *这玩意去导包的,包括idea的import *默认也是超过5个相同包就给你合并使用import *导入

attachments-2023-09-KxLqW39T651234cdec5c3.jpg

突然给提了这个规范就打算研究下单个类的导入和import *导入的一个区别。

其实java是有两种中导包机制的

单类型导入(single-type-import):例如 import java.util.List;

按需类型导入(type-import-on-demand):例如import java.util.*;

平时我们开发因为idea配置,所以导入相同包下面的类多了基本都会自动转换为按需类型导入(type-import-on-demand),所以其实只要我们使用统一的idea配置也是无感知的。如果团队中所有人都是使用这种方式,你一个人改为单类型导入(single-type-import)方式可能就会经常出现代码冲突。所以单从这点来看我们需要团队有一个统一的开发规范

性能方面

其次在研究过程中我还发现是有一些编译性能差异的,但是不会对运行时的性能产生任何影响 因为Java编译器是按如下顺序寻找类的

在显示导入的类中

在包中

最后再寻找通配符相关的包

就像下面两个例子。虽然

package something; 

import java.util.*; 

  //.... 

Set set = null;  // something.Set 

  //.... 

这里是不知道Set是什么Set


package something; 

import java.util.Set; 

  //.... 

Set set = null;  // java.util.Set 

  //.... 

这里就明确知道了Set 是 java.util.Set


命名冲突

比如两个类的名字相同会导致编译错误 网上最常见的例子就是同时导入


import java.awt.*

import java.util.*

List就会编译错误,虽然现在awt相关的类我们开发基本不会用到,但是使用import *确实会有这个问题


总结

使用import *会影响一点编译时期的运行效率

会产生命名冲突(实际少有遇到)

不使用import *会导致看到很多显示的导入,有的人觉得不舒服

总的来说使用import *是更好一点,像技术极客追求规范就应该会禁止使用import *,相对传统的业务开发看来使用import *好像也没什么影响。总体来说还是要看开发团队的规范

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Java编程语言,推荐大家关注一个微信公众号:Java圈子。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Java入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2023-03-2AoKIjPQ64014b4ad30a3.jpg

  • 发表于 2023-09-26 09:34
  • 阅读 ( 282 )
  • 分类:Java开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
王昭君
王昭君

209 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章