import wildcard in Java

By | 4 8 月, 2019

import pacakage.*;


很多人都知道要避免import wildcard,那为什么import all不好呢?也许有人认为,import wildcard会导致import太多不必要的类,会导致类很臃肿或者运行变慢。

其实:


import java.util.Date;



import java.util.*;


它们在性能上没有有任何区别,import语句只是告诉compiler在哪里寻找依赖的类。编译成的class文件中是没有import语句的,例如下面的class文件:

屏幕快照 2019 08 04 下午9 20 49

或者可以说import是个语法糖,如果没有import语句,就要在每个使用到的外部类(同包里的除外)前面加上package路径。


javax.swing.JButton but = new  javax.swing.JButton();


为什么不用import wildcard

防止类冲突。项目中可能有重名的类,不同工具包也有重名类,例如下面两个包都包含Date,此时编译器会报错。

屏幕快照 2019 08 04 下午9 45 33

Google Java代码规范中,要明确import使用的类,避免import wildcard。

但是我在Clean Code书的17.5章节看到,作者说建议使用import wildcard。理由是:过长的导入清单让读者望而却步,不想让80行的导入语句搞乱代码顶部,import wildcard会让类简洁。这个观点我不太认同,IDE会自动把impor语句t收缩成一行,而且在Eclipse中,ctrl + shift + O可以自动导入需要的类。

One thought on “import wildcard in Java

Comments are closed.