在 Java 中的 Import 语句中使用 * [重复]
Posted
技术标签:
【中文标题】在 Java 中的 Import 语句中使用 * [重复]【英文标题】:Use of * in Import Statement in Java [duplicate] 【发布时间】:2013-01-31 14:09:53 【问题描述】:谁能解释一下 Java 中的 import 语句。有些导入带有 * 后缀,有些则没有。这两者有什么区别?在 import 语句中使用 * 是否会导入所有的类?
看这里import
他们在这里说过,尽管 import 语句看起来是嵌套的,但实际上并非如此。 谁能详细解释一下?
【问题讨论】:
我投票关闭,太本地化了。每个 Java 教程/书籍都回答了这个问题... @adarshr 一点都没有:OP 不会问为什么或者它是否不好。 @dystroy 即便如此,通过阅读该问题的所有答案,OP 可以清楚地了解 import 语句。不要只看标题:) @adarshr 对我来说,家庭关闭的原因要准确得多。如果没有遇到这种情况,您甚至无法完成教程。 这里不是讨论、澄清和学习的地方,对吧? 【参考方案1】:使用*
被认为是一种不好的做法。它用于导入该包中的所有文件。更正确的方法是列出您需要的每个类,特别是在您在 IDE 之外进行代码审查并且需要知道您正在使用的类的版本的情况下。从本质上讲,它滋生了开发团队的懒惰。
评论
对于那些认为这不是我所说的“坏”做法的人。你怎么能说这是一个好习惯呢?
import java.util.*;
import java.io.*;
即使编译器会忽略*
下的所有内容,除了您导入的List
,这对将来查看代码的人有何帮助?我认为这里的很多人都忘记了您正在为人类而不是计算机编写代码。此外,当 Java 消失并且您正在使用 SuperAwesomeLanguage 时,您怎么可能转换此代码?鉴于以下示例,请在您对 java 的了解为零时将其转换为您的新语言:
public class Foo
private List list;
List
在 io
中吗? io
甚至是必需的吗?问题是你不知道。因此,通过明确说明,您可以指导未来的开发人员了解需要哪些类。
【讨论】:
The use of * is considered a bad practice
- 你有这个来源吗?
编译器将忽略未使用的类。我不认为这被认为是“不好的做法”。
完成你的代码然后 ctrl-shift-o :)
@dystroy - 我认为你一针见血 - 这是一种意见。我自己,我更喜欢明确列出所有包,如果只是为了减少简单名称冲突的(轻微)机会。但这只是我的一种做法,而不是您在任何地方都可以找到的规定的最佳做法。
@Woot4Moo 说某事不是“坏习惯”与说它是“好习惯”是不一样的。我承认,如果发现冲突,可能会出现问题。但是import static org.junit.Assert.*;
为我节省了大量编码时间...【参考方案2】:
import com.example.*
导入 com.example 包中的所有类
import com.example.ClassName
只导入 ClassName 类
【讨论】:
【参考方案3】:来自您的链接:
导入 java.util.*;
* 是一个“正则表达式运算符”,它将匹配任何 字符的组合。因此,此导入语句将 在 java.util 中导入所有内容。如果您尝试过进入并运行 上面的示例程序,您可以将导入语句更改为此 一个。
所以是*后缀导入此路径中的所有类
【讨论】:
【参考方案4】:在 import 语句中使用 * 是否会导入所有类
是的。
From Oracle's Documentation :
type-import-on-demand 声明允许所有可访问的类型 根据需要导入的命名包或类型。
【讨论】:
以上是关于在 Java 中的 Import 语句中使用 * [重复]的主要内容,如果未能解决你的问题,请参考以下文章