为什么在Java导入语句中使用通配符是错误的?

使用这样的语句更方便、更简洁

导入java.awt.*;

而不是导入一堆单独的类

导入java.awt.Panel;
导入java.awt.Graphics;
导入java.awt.Canvas;

import语句中使用通配符有什么问题

唯一的问题是它会使您的本地名称空间变得混乱。例如,假设您正在编写一个Swing应用程序,因此需要java.awt.Event,并且还与公司的日历系统接口,该系统具有com.mycompany.calendar.Event。如果使用通配符方法导入这两项,则会发生以下三种情况之一:

  1. java.awt.Eventcom.mycompany.calendar.Event之间存在直接命名冲突,因此您甚至无法编译
  2. 实际上,您只导入了一个(两个导入中只有一个导入了*),但它是错误的,您很难弄清楚为什么代码声称类型是错误的
  3. 编译代码时,没有com.mycompany.calendar.Event,但当他们后来添加一个时,以前有效的代码突然停止编译

显式列出所有导入的优点是,我可以一目了然地告诉您要使用哪个类,这使得阅读代码变得更加容易。如果您只是在做一件简单的一次性工作,那么没有什么明显的错误,但是未来的维护人员会感谢您的清晰

发表评论