查询包

时间:2016-09-13 15:10:42

标签: java import packages

我知道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并将它们放在不同的目录中并且工作正常。

1 个答案:

答案 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"作品;那么,你一定做错了!