一尘不染

为什么在Java导入语句不好的情况下使用通配符?

java

使用单个语句像

import java.awt.*;

而不是导入一堆单独的类

import java.awt.Panel;
import java.awt.Graphics;
import java.awt.Canvas;
...

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


阅读 445

收藏
2020-02-25

共1个答案

一尘不染

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

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

显式列出所有导入的优点是,我可以一目了然地告诉你要使用哪个类,这使阅读代码变得更加容易。如果你只是快速地一次性完成,则没有任何明显的错误,但是以后的维护人员将感谢你的清晰说明。

2020-02-25