导入未使用的包是不是很糟糕?

时间:2014-11-10 15:36:01

标签: java import packages

例如,当您在同一个文件的团队中工作时,只能部分了解导入代码所需的不同软件包。您更改了此文件中的某些代码,并发现某些代码因此而变得多余。您删除该部分,现在不知道整个代码是否仍依赖于所有包。

[当然,在很多方面都可以对物体进行客体化:速度,读取等等。]

3 个答案:

答案 0 :(得分:6)

是。原因有两个:

  1. 对于看到可能会或可能不会使用的导入的代码的人来说,这可能会令人困惑。
  2. 使用相同名称导入的多个类可能存在导入冲突。这将要求除了一个类似的类名之外的所有类名都可以通过代码中的完全限定名称来引用。
  3. 由于这些原因,如果不需要import语句,并且IDE有办法自动删除未使用的导入,java将发出警告。

    注意,我没有提到速度或性能变化,我认为javac非常聪明,知道不使用任何不需要的导入,所以编译后的类就像你没有导入它一样。 / p>

答案 1 :(得分:6)

您应该始终只使用必要的导入数量,并且不要使用完整的包导入,例如java.util.*。今天的IDE通常会通过"组织进口"来支持这一点。删除未使用的导入的操作。

如果您有大量未使用的导入并修改了代码,则有可能添加/更改引用未使用的导入所涵盖的类的代码。然后你不会注意到你不小心使用了它们,即使这可能不是你的意图。

如果您只有最小的导入,如果添加引用新类的代码,编译器会立即通过显示错误通知您,并让您可以选择要使用的类。

此外,如果您使用的导入超出了程序中当前引用的导入,则会增加为将来的Java版本或您使用的库中断程序的机会。

示例:如果您的程序仅使用java.util.HashSet,但仍然导入java.util.*,并且您使用了导入com.mylib.*的其他第三方库,那么您的代码可能会编译。如果在将来的版本中第三方库添加了一个名为com.mylib.HashSet的类,那么您的代码可能不再编译,因为编译器可能无法告诉您要使用哪个类(例如{{1} }或java.util.HashSet) 您是否仅导入了com.mylib.HashSet,例如java.util.HashSet首先,您的代码仍将使用新版本的第三方库进行编译。

答案 2 :(得分:1)

导入未使用的包不会影响您的速度,如here

所述

然而......如果您导入了无用的包,它确实会使您的代码更难读。如果您使用的是NetBeans,则始终可以使用Ctrl + Shift + I删除未使用的导入。