是否进口进口通配符一切时间?(Does an import wildcard import ever

2019-07-17 11:10发布

我工作的一个小Java程序,并使用数组,所以我做了:

import java.util.Arrays;

后来我开始扩大在什么我以前做了决定我想从用户那里得到输入,所以在这一点上我补充说:

import java.util.Scanner;

现在,一个念头出现。 我知道,我可能只是这样做:

import java.util.*

然后,我只需要1条导入线,而不是两个(或然而,许多我最终需要),但在进口通配符意味着它将导入一切事情 ,从包无论是否需要这种耐心与否,或者说只在选择性的功能拉?

在这里,我的直觉是编写更多的代码,只包括我知道我需要的软件包,但如果不有所作为,为什么会有人进口更多的水平/包,然后他们需要? (我宁愿只是偷懒,写更少的代码)

Answer 1:

要清楚什么进口正在做什么。 这并不意味着加载.class文件,字节码。

所有的进口确实是让你通过使用短类名,以节省打字。

所以,如果你使用java.sql.PreparedStatement在你的代码,你要使用PreparedStatement当您导入java.sql.PreparedStatement 。 你可以永远写Java代码,而无需使用单独的import语句。 你要自己拼出来的所有全解析的类名。

而类加载器仍然会在字节码带来从.class文件中第一次使用在运行时。

这样可以节省你的按键。 就这样。

它有没有关系的类加载。

就个人而言,我更喜欢以避免*符号。 我拼每一个导入的。 我认为它记录了我的意图更好。 我的IDE是的IntelliJ,所以我要求它插入在飞行进口。

懒惰通常是一种美德为开发者,但不是在这种情况下。 拼写出来,让你的IDE插入他们为你逐一。

如果你输入

import java.util.*;

你会得到指Scanner ,并List它们的短名字。

但是,如果你想为做同样的FutureTaskLinkedBlockingQueue你必须有这样的:

import java.util.concurrent.*;


Answer 2:

通配符进口一切都在那个包。 然而,使用像Eclipse的IDE,它为您提供了组织进口的可能性。



Answer 3:

通配符全进口类和接口在包中。

但是,通配符进口不会导入具有相同名称的开始,包等。

例如,进口java.xml。* 不会导入java.xml.bind包。



文章来源: Does an import wildcard import everything all the time?