Java导入会很慢吗? [复制]
Posted
技术标签:
【中文标题】Java导入会很慢吗? [复制]【英文标题】:Java import can be slow? [duplicate] 【发布时间】:2011-01-09 14:44:02 【问题描述】:import package.* 是否比 import package.MyClass 慢? 如果是,在哪个场景中:运行时还是编译?
【问题讨论】:
***.com/questions/1983435/… 【参考方案1】:import package.*
在编译时可能会变慢。如果该包中定义了很多东西,它也会减慢您的 IDE。
在运行时,there's no difference。
【讨论】:
citationrequired
- 你有任何证据表明它在编译时变慢了吗?
你的意思是citation needed
:P 不,我手头没有这样的证据。不过,我已经直接注意到 IDE 速度下降。
哦,我的引用刚刚出现:***.com/questions/1983435/…【参考方案2】:
这发生在编译期间。如果存在速度差异,则可以忽略不计。
【讨论】:
【参考方案3】:如果导入的包异常巨大,我猜通配符导入可能会减慢编译速度,但实际上,它可以忽略不计。
导入语句在运行时无效。无论使用通配符还是显式导入,编译后的类都是相同的。
但是,通配符导入通常不被鼓励,因为它们会使代码难以阅读;当以这种方式导入多个包时,人类读者不清楚一个类型来自哪个包。
【讨论】:
不鼓励导入通配符的其他原因:javadude.com/articles/importondemandisevil.html 重新链接:确实如此,我自己也被这件事烫伤了。我在导入 java.util.* 时也被烧了几次,所以我可以使用 Date,然后添加 java.sql.*,反之亦然。这与链接描述的问题并不完全相同——当我添加导入时出现错误,而不是当其他一些糟糕的傻瓜检查我的代码时——但根本问题是相同的:你被一个模棱两可当您不关心其中一个选项时参考。也就是说,我必须承认我通常只是不担心它,并使用 import something.* 每当我想要超过 3 时。 如果您将鼠标悬停在声明中的类名上,现代 IDE(甚至一些古老的 IDE)会告诉您该类在哪个包中。我看不出这如何使您的代码可读性降低。如果你在不同的包中有两个同名的类,为了减少混淆,你应该在对象声明语句中使用完整的包名,但只有当你在一个类中使用两个同名的类时才需要这样做。 【参考方案4】:因为编译器做了一些优化,运行时不会变慢。 它在编译时可能会更慢,但在 99,99% 的情况下,您可能并不在意......
【讨论】:
这并不是真正的优化,只是编译器将完全限定名编译到.class文件中(import是编译器指令)。以上是关于Java导入会很慢吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章