导入包。*或导入package.class_name

时间:2014-01-28 16:44:19

标签: java import

使用它们有任何性能优势或劣势吗?我在Eclipse中注意到,由于缺少类,我需要导入一些东西,它只导入那个特定的类。可以理解,因为那是我当时唯一使用的课程。例如,我可以有package.models。此模型文件夹包含8个定义数据表结构的类。这可能是一个小例子,但使用package.models。*与package.models.specific_model_name相比有什么性能优势/劣势吗?

我问这个是因为当我第一次开始编程时,我常常因为在我的查询中使用“select *”而被屠杀。我很好奇是否同样适用于导入课程,我在整个职业生涯中从未真正听过任何人提及。

编辑:感谢所有回复的人。遗憾的是,我没有足够的声誉给任何人任何赞成。我也更倾向于将这一个重复,Import package.* vs import package.SpecificType

3 个答案:

答案 0 :(得分:2)

根本没有运行时性能影响。

使用哪一个最适合你。 (我个人不喜欢使用通配符,因为如果你有多个通配符import,你往往会遇到很多名称冲突。)

答案 1 :(得分:1)

虽然没有运行时性能损失,但使用*

是不好的做法

作为一个局外人阅读你的代码的原因,我想知道你正在使用哪个类。通常有许多类在不同的包中以不同的方式实现。避免*使你明显使用它。

例如, java.awt.List中; VS java.util.List的;

如果您依赖*。

,很可能会出现模糊的命名冲突

话虽如此,所有*确实告诉java编译器应该在哪里解析类定义。所以说*,“嘿编译器,在寻找类时,可以随意查看与模式blah.blah匹配的任何地方。*”所以理论上,在编译器搜索此模式时,编译中的性能非常小。类。但是,你永远不会注意到它,这种打击完全可以忽略不计。

答案 2 :(得分:1)

尽量避免使用[package]。*因为如果你以外的其他人阅读了你的代码,他们会想知道你正在使用哪个类。