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

import java.awt.*;

而不是导入一堆单独的类

import java.awt.Panel;
import java.awt.Graphics;
import 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,但是当他们后来添加一个时,你以前有效的代码突然停止编译.

显式列出所有导入的好处是,我一眼就能看出您要使用的是哪个类,这只会使阅读代码变得容易得多.如果您只是快速地做一件一次性的事情,没有什么是明确的wrong,但是将来的维护人员会感谢您在其他方面的清晰度.

Java相关问答推荐

在URL类图中表示Java swing类

使用Apache Poi MQLSlideShow,在XSLFTable表中,我们可以在文本段落后面的每个单元格中包含圆角矩形吗?

在Java中测试DAO方法:假实现与内存数据库

ittext pdf延迟签名,签名无效

使用java访问具体子类特定方法的最佳方法是什么?

通过合并Akka Streams中的多个慢源保持订购

我找不到&Quot;配置&的位置

R.id.main给我一个红色错误,无法解析MainActivity.java中的符号main

Java LocalTime.parse在本地PC上的Spring Boot中工作,但在Docker容器中不工作

Jakarta CDI强制bean构造/注册遗留事件侦听器

用OSQL创建索引

Android Java:已设置但未读取SharedPreferences

Regex以查找不包含捕获组的行

如何在IntelliJ IDEA的Build.sbt中添加外部JAR文件?

Java集合:NPE,即使没有添加空值

如何在右击时 Select 新行?

我无法在我的Spring Boot应用程序中导入CSV依赖项

保持标题窗格的箭头可见,即使设置为不可折叠

java.lang.ClassCastException:com.google.firebase.FirebaseException无法转换为com.google.fire base.auth.FirebaseAuthException

[Guice/MissingImplementation]:未绑定任何实现