为什么不要使用 import *

Java 存在两种包的导入机制

  • 单类型导入、这个也是推荐并且也是常见常用的
  • 按需类型导入、这个是不推荐的、也就是我们常说的 import xxx.xx.*

单类型导入仅仅是导入一个接口或者类、而按需导入也是仅仅导入当前类所需要使用的类、两者的差别只是对类文件的定位算法不一样。

Java 编译器会从启动目录、扩展目录以及用户类路径目录去定位需要导入的类。这三个目录也是我们所说的类的顶级目录。

编译器定位类文件的方法大概如下

顶层路径名(也就是目录) \ 包名\文件名.class

这三者加起来就是一个绝对路径了

因为单类型导入、包名和类名都是确定的、所以可以一次性查找定位

而按需导入因为其包名和类名是不确定、那么就需要组合排列、比如说

package com;
import java.util.*;
import java.awt.*;
public class TestImport {
    public static void main(String[] args) {
        List list;
    }
}

这个代码中使用到 List 这个类、那么它可能的包名 + 类名就是

  • List 属于无包名
  • com.List 跟当前的类属于同一个包
  • java.lang.List 编译器自动导入 java.lang 包
  • java.util.List
  • java.awt.List

编译器即使找到 java.util.List 也不会停下来、而是会继续寻找、找出所有的判断是否有类导入冲突

微信公众号:CoderLi

如果是一个顶层路径、那么就比单类型导入多出四次查找、如果是两个顶层路径就多出八次

所以按需导入不会影响我们实际运行 class 文件、只是会影响编译的速度

所以综上所述、import * 还是不推荐的。idea 中可以设置、

微信公众号:CoderLi

启动优化导入、移除无用的 import

微信公众号:CoderLi

  • 同一个包下的 xxx 个类自动合并为 import *
  • 导入静态类时、达到 xxx 个自动合并为 import static *

这里改为 100

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在PyCharm中,当我们使用`from modules import *`这样的语句时,`modules`这个模块会显示为灰色。这是因为PyCharm对于这种导入方式存在一些警告,并提醒我们最好不要使用它。 灰色表示该导入语句存在一些问题或不被推荐使用。在这种情况下,`from modules import *`这样的写法会导入该模块中的所有对象,包括函数、类和变量等。这种方式的问题在于难以明确知道所有被导入的对象以及它们的来源,容易造成命名冲突或者在代码维护时带来困惑。 PyCharm推荐使用更明确的导入方式,例如`from modules import object_name`,其中`modules`是指待导入的模块名,`object_name`是模块中需要使用的对象名。这样不仅能够明确指定导入的对象,还能够避免命名冲突并使代码更易于理解和维护。 总之,当我们在PyCharm中看到`from modules import *`这样的导入语句显示为灰色时,可以考虑使用更明确的导入方式,以提高代码的可读性和可维护性。 ### 回答2: 在PyCharm中,当我们使用"from modules import *"语句时,将会导入所有modules模块中的内容。然而,当我们在PyCharm中使用该语句时,这一行代码会被标记为灰色。这是因为PyCharm提醒我们,这种导入方式不是一个好的实践。 使用"from modules import *"的方式会导致你无法准确知道引入了哪些模块或函数,从而降低代码的可读性和可维护性。这样的导入方式也可能会引发命名冲突的问题,因为在导入多个模块时,可能会有相同名称的函数或变量。 相比之下,推荐的做法是明确地导入所需的模块和函数,例如使用"from modules import func1, func2"的方式。这样可以避免导入不必要的内容,提高代码的可读性,并且减少了命名冲突的可能性。此外,明确导入的方式也让其他开发者更容易理解你的代码,并更好地进行代码审查和维护。 因此,在PyCharm中,当我们使用"from module import *"的方式导入模块时,该行代码会以灰色显示,提醒我们更好地选择导入模块的方式。 ### 回答3: 当在PyCharm中使用"from modules import \*"语句时,这一行代码通常会变为灰色。灰色的意思是PyCharm在这里给出了一个潜在的警告信息或者建议。这样做是为了提醒开发者可能存在的问题或改进的机会。 在这种情况下,"from modules import \*"声明通常不是一个好的做法。通配符导入将所有模块中的所有成员导入到当前的命名空间中,这会导致命名空间变得混乱,难以维护和理解。此外,由于所有成员被导入,可能会出现命名冲突的风险。 灰色的代码是PyCharm通过静态代码分析来提醒开发者可能存在的问题。他们鼓励开发者改进他们的代码,以使其更加清晰,易于理解和维护。因此,当看到灰色代码时,我们应该考虑更好的解决方案来导入需要的模块,例如明确指定要导入的成员,或者将模块导入并使用标准的命名约定。 当然,并不是所有情况下都需要遵循灰色代码的建议。有时候可能会有合理的理由使用通配符导入,但是我们应该始终评估代码的质量和可读性,并确保我们的代码易于维护和共享。通过遵循良好的编码实践,我们可以提高代码的质量和可维护性,从而成为更有效的开发者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值