Java 关于包的查询

Java 关于包的查询,java,import,packages,Java,Import,Packages,我知道,导入示例。*将导入包示例中的所有类和接口。因此,只有当示例包中有2个或更多类时,才有必要使用* 因为在我的程序中,包示例中只有一个类,xyz,当我试图通过导入示例在其他程序中使用它时。*,无法访问xyz类 相反,如果我像-import example.xyz那样使用它,那么只有它在其他程序中才可访问。但是通常的import java.util.*和其他命令工作正常。这是因为它们在这些包中有多个类和接口,只有这样才能使用*? 编辑:包代码 package myPackage; public

我知道,
导入示例。*
将导入包示例中的所有类和接口。因此,只有当示例包中有2个或更多类时,才有必要使用
*

因为在我的程序中,包示例中只有一个类,
xyz
,当我试图通过导入示例在其他程序中使用它时。*,无法访问
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放在jdk的bin文件夹中。我把它们从package和ghg.java中移出,放在不同的目录中,结果成功了

这些导入语句只是一个指示,让编译器知道在源代码中查找正在使用的类的位置

从这个意义上说,这只是风格的问题。使用一种或另一种样式没有很好的技术理由

但是很多人认为使用“输入x.y*”是不好的做法;他们建议有“导入x.y.Class1”、“导入x.y.Class2”

其背后的原因是:作为人类读者,您对理解其他包中的依赖关系非常感兴趣。使用通配符导入时;你没有办法了解到底有多少类被真正使用。如:如果您的类需要50100个导入。。。仅此一点就可以告诉您出了问题(因为您的类在导入50100个其他类时有太多的依赖项)。如果使用通配符,您将不知道

因此,eclipse等工具在默认情况下将“推出”通配符导入,并将它们转换为特定的类导入


准确地说:使用“导入*”从来都不是必需的。有时看起来很方便!当“导入x.y.*”不起作用时;但“进口x.y.z”起作用;那好吧,你一定做错了什么

类xyz是否声明为公共类?那么,当我这样导入它时,为什么该类不可访问?对于我来说,这可以在您收到的错误消息(1)/和(2)后获得正确的答案。你也可以包括你的项目结构。向我们展示代码,这样会更容易帮助你。这不是他的问题,他想知道为什么它在具体执行时起作用,但不是使用通配符我想检查我的编辑。我仍然不明白那里出了什么问题
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