Java-пакеты и взаимный импорт - PullRequest
0 голосов
/ 26 июня 2018

используя java, я пытаюсь понять, как создавать подпакеты внутри родительских пакетов, общий родительский каталог, и как подпакеты импортируются между подпакетами и между пакетами взаимозависимым образом.

Структура каталогов

/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

КЛАССПАТ

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

Звонки через субпакеты

здесь вызовы выполняются через подпакеты (то есть от packageA / subPackageA к packageA / subPackageB и наоборот) ....

Класс АА

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!");
    }
}

Класс AB

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();
    }
}

по какой-то причине ClassAA не может найти ClassAB.

Звонки через родительские пакеты

здесь вызовы выполняются между пакетами (от packageB / subPackageA до packageC / subPackageA и наоборот) ....

Класс БА

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!");
    }  
}

Класс CA

package packageC.subPackageA;

import packageB.subPackageA.*;

public ClassCA
{
    private ClassBA testClass;

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

по какой-то причине ClassBA не может найти ClassCA.

заранее большое спасибо!

1 Ответ

0 голосов
/ 26 июня 2018

В java нет концепции родительских дочерних пакетов или подпакетов.

Если вы создадите два пакета packageA.subPackageA и packageA.subPackageB, оба subPackageA и subPackageB будут находиться в папке packageA в файловой системе. Однако для java packageA.subPackageA и packageA.subPackageB совершенно разные, и между ними как родительским потомком нет никакой корреляции.

...