我知道import example.*
将导入包示例中的所有类和接口。那么只有在示例包中有2个或更多类时才需要使用*
吗?
因为在我的程序中,在包示例中只有一个类xyz
,当我尝试在import example.*;
的其他程序中使用它时,xyz
类不是访问。
相反,如果我像 - import example.xyz
那样使用它,那么只有它可以在其他程序中访问。但通常的import java.util.*
和其他命令工作正常。那么是因为它们在这些包中有多个类和接口,只有这样才能使用*
?
编辑:包裹代码
package myPackage;
public class abcd
{
public void show()
{
System.out.println("this is from package");
}
}
程序
import myPackage.*;
class ghg
{
public static void main(String args[])
{
abcd x=new abcd();
x.show();
}
}
错误
ghg.java:7: cannot access abcd
bad class file: .\abcd.class
class file contains wrong class: myPackage.abcd
Please remove or make sure it appears in the correct subdirectory of the classpath
编辑:所以我将ghg.java保存在jdk的bin文件夹中。我将它们移出package和ghg.java并将它们放在不同的目录中并且工作正常。
答案 0 :(得分:0)
这些import语句只是指示编译器知道在源代码中查找要使用的类的位置。
从这个意义上说,这只是关于 style 。使用一个或另一个样式没有很好的技术原因。
但很多人考虑使用" import x.y。*"是不好的做法;他们建议让#34;导入x.y.Class1","导入x.y.Class2",...
背后的推理:你,因为人类读者非常有兴趣了解其他包的依赖性。使用外卡导入时;你无意了解真正使用了多少个类。如下所示:如果你的类需要50,100个导入......仅此一个就会告诉你出错了(因为你的类在导入50,100个其他类时有太多的依赖关系)。如果使用通配符,你就不会知道。
因此,默认情况下,eclipse等工具将推出"通配符导入并将它们转换为特定的类导入。
让我们准确一点:使用" import *" 从不是必需的。它有时似乎方便!当"导入x.y。*"不起作用;但是"导入x.y.z"作品;那么,你一定做错了!