【问题标题】:java packages and mutual importsjava包和相互导入
【发布时间】:2018-06-26 16:52:57
【问题描述】:

使用 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,反之亦然)....

AA 级

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,反之亦然)....

BA类

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。

非常感谢!

【问题讨论】:

  • 那么确切的问题是什么?
  • 把它们都放在同一个包里,不用任何import语句就可以互相看到了。

标签: java import packages


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-08-22
    • 2015-05-24
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多