前几天公司整理开发规范文档,有一条是禁止import xxx.*,记得读书的时候老师告诉讲import *并不会对资源或性能有什么实质的影响,于是做了一次实现。
首先建一个Test测试类:
import java.util.ArrayList; import java.util.*;//idea会自动将超过3个同类的引入合并成.*,这里是不是已经暗示着真相了(滑稽) /** * @author :shenzhikui * @description:TODO * @date :2019/8/2 */ public class Test { public static void main(String[] args) { Date date = new Date(); List list = new ArrayList<>(); Map map = new HashMap(); } }
然后编译,查看class文件:
结果显而易见,java文件经过编译后只会导入有用的jar包,为什么说是有用的包?我们再看一个例子:
import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.HashMap;//这里为了直观,手动把*拆开了 /** * @author :shenzhikui * @description:TODO * @date :2019/8/2 */ public class Test { public static void main(String[] args) { Date date = new Date(); List list = new ArrayList<>(); //Map map = new HashMap();//把map去掉 } }
此时,Map和HashMap已经没用了,在编辑器上也显示灰色,然后编译查看class:
Map和HashMap被过滤掉了
结论:
import xxx.*并不会对性能或资源造成影响,如果要说影响,可能就是对代码可读性的影响,比如没删除无用的引入上面总是显示灰色不太美观,或者使用*之后不能直观的看出此类引入了哪些类库等等,类似书写规范的要求。当然,有一种情况是你使用了两个类库的同名类,会导致引用矛盾,不过这种情况像idea等编辑器会直接报错。