在Java中使用导入语句中的*

有人可以用Java解释我的import语句。 有些导入有*后缀,有些则没有。 这两者有什么区别? 在import语句中使用*是否导入了所有类?

看到这里导入

在这里他们已经说过,尽管import语句似乎是嵌套的,但事实并非如此。 有人可以详细解释一下吗?

使用*被认为是一种不好的做法。 它用于导入该包中的所有文件。 更正确的方法是列出您需要的每个类,特别是在您在IDE之外进行代码审查并需要知道您正在使用的类的哪个版本的情况中。 从本质上讲,它会在开发团队中产生懒惰。

评论

对于那些认为这不是我所说的“坏”做法的人。 你怎么能说这是一个好习惯?

 import java.util.*; import java.io.*; 

即使编译器忽略了除导入的List之外的所有内容,这对于将来查看代码的人有何帮助? 我认为这里有很多人忘记你是在为人而不是计算机编写代码。 当Java消失并且您正在使用SuperAwesomeLanguage时,您怎么可能转换此代码? 给出以下示例,当您对java有零知识时,请将其转换为您的新语言:

 public class Foo { private List list; } 

Listio ? 甚至还需要吗? 问题是你不知道。 因此,通过明确,您可以指导未来的开发人员,了解所需的类。

在import语句中使用*是否导入所有类

是。

来自Oracle的文档:

类型导入按需声明允许根据需要导入命名包或类型的所有可访问类型。

从您的链接:

import java.util。*;

*是一个“正则表达式运算符”,它将匹配任何字符组合。 因此,此import语句将导入java.util中的所有内容。 如果您已尝试输入并运行上面的示例程序,则可以将import语句更改为此语句。

所以是* suffix导入此路径中的所有类

 import com.example.* 

导入com.example包中的所有类

 import com.example.ClassName 

只导入ClassName类