为什么不使用像java.util.*这样的通配符导入?

为什么不使用像java.util.*这样的通配符导入?,java,import,Java,Import,我是一名学生,我一直在读的几本书(比如Java for Dummies)都说使用通配符import语句是不好的编程实践,并鼓励读者避免使用它。然而,在课堂上,我们被鼓励使用它。有人能解释一下为什么它是糟糕的编程实践吗 如果是,它对项目绩效有什么不利影响?例如,放慢速度。插入越多,两个类具有相同类名时发生命名冲突的更改越大: 我可以在java API中找到的第一个示例是: 插入越多,两个类具有相同类名时发生命名冲突的更改越大: 我可以在java API中找到的第一个示例是: 这是一个纯粹的句法

我是一名学生,我一直在读的几本书(比如Java for Dummies)都说使用通配符import语句是不好的编程实践,并鼓励读者避免使用它。然而,在课堂上,我们被鼓励使用它。有人能解释一下为什么它是糟糕的编程实践吗


如果是,它对项目绩效有什么不利影响?例如,放慢速度。

插入越多,两个类具有相同类名时发生命名冲突的更改越大:

我可以在java API中找到的第一个示例是:

插入越多,两个类具有相同类名时发生命名冲突的更改越大:

我可以在java API中找到的第一个示例是:

这是一个纯粹的句法结构;它在运行时没有效果。@SLaks,当运行时引擎链接所有代码时,它不会链接更多的代码而不是您需要的代码吗?因此,减少启动时间?我相信编译器会挑选并选择实际需要的特定库。不过,通过通配符导入仍然存在问题。请看下面的答案。@RoK:不。Java没有类似链接器的东西。类加载器在每个类第一次使用时加载它;它在运行时没有效果。@SLaks,当运行时引擎链接所有代码时,它不会链接更多的代码而不是您需要的代码吗?因此,减少启动时间?我相信编译器会挑选并选择实际需要的特定库。不过,通过通配符导入仍然存在问题。请看下面的答案。@RoK:不。Java没有类似链接器的东西。类加载器在第一次使用时加载每个类。具体来说,
java.util.Date
java.sql.Date
是这个问题的一个非常恼人的例子。这通常不是什么大问题,但是。。。Java和Java for Android略有不同,重要的是您要进行正确的、特定的导入。我相信,标准Java和Android Java之间存在一些重叠。不要忘记用户指定Java API中已经存在的类名的情况。特别是,
Java.util.Date
Java.sql.Date
是这个问题的一个非常恼人的例子。这通常不是什么大问题,但是。。。Java和Java for Android略有不同,重要的是您要进行正确的、特定的导入。我相信标准Java和Android Java之间有一些重叠,不要忘记用户指定Java API中已经存在的类名的情况