Java包和相互导入

时间:2018-06-26 16:52:57

标签: java import packages

使用Java,我试图弄清楚如何在父包,公共父目录中构建子包,以及在子包之间以及包之间以相互依赖的方式导入子包的地方。

目录结构

import itertools
def genSeq(item):
    yield from (item*i for i in itertools.count())

CLASSPATH

/rootdir/TestSource/parentDir/packageA/subPackageA/ClassAA.java
/rootdir/TestSource/parentDir/packageA/subPackageB/ClassAB.java
/rootdir/TestSource/parentDir/packageB/subPackageA/ClassBA.java
/rootdir/TestSource/parentDir/packageC/subPackageA/ClassCA.java

跨子程序包调用

此处调用是在子包之间进行的(即,从packageA / subPackageA到packageA / subPackageB,反之亦然)。

AA级

CLASSPATH="$CLASSPATH:/rootdir/Test_Source/parentDir/"

AB类

package packageA.subPackageA;

import packageA.subPackageB.*;

public ClassAA
{
    private ClassAB testClass;

    public ClassAA()
    {
    }
    public void sayHelloWorld()
    {
        System.out.println("Hello World from AA....");
        testClass = new ClassAB();
        testClass.sayHelloWorld();
    }
    public void sayGoodbyeWorld()
    {
        System.out.println("Goodbye World from AA!");
    }
}

由于某种原因,ClassAA无法找到ClassAB。

跨父包调用

这里调用是跨包进行的(从packageB / subPackageA到packageC / subPackageA,反之亦然)。

BA类

package packageA.subPackageB;

import packageA.subPackageA.*;

public ClassAB
{
    private ClassAA testClass;

    public ClassAB()
    {
    }
    public void sayHelloWorld()
    {
        System.out.println("Hello World from AB....");
        testClass = new ClassAA();
        testClass.sayGoodByeWorld();
    }
}

CA类

package packageB.subPackageA;

import packageC.subPackageA.*;

public ClassBA
{
    private ClassCA testClass;

    public ClassBA()
    {
    }
    public void sayHelloWorld()
    {
       System.out.println("Hello World from BA....");
       testClass = new ClassCA();
       testClass.sayHelloWorld();
    }
    public void sayGoodbyeWorld()
    {
        System.out.println("Goodbye World from BA!");
    }  
}

由于某种原因,ClassBA无法找到ClassCA。

非常感谢!

1 个答案:

答案 0 :(得分:0)

java中没有父子包或子包的概念。

如果创建两个软件包packageA.subPackageA和packageA.subPackageB,则subPackageA和subPackageB都将位于文件系统的packageA文件夹中。 但是,对于java,packageA.subPackageA和packageA.subPackageB完全不同,并且作为父级子级,它们之间没有关联。