在另一个包的Interface文件中使用类

时间:2018-05-18 09:51:16

标签: java eclipse scope

我有两个包裹。第一个包含一个空接口和一个在单个文件中实现它的类(" IThing"和#34; Thing")。第二个接口包含另一个接口(" IThingUser"),它有一个返回类型" Thing"的对象的函数。

当两个文件都是同一个包的一部分时,一切正常,但如果它们在两个独立的包中,则package2中的那个不能访问第一个包中定义的类。

Package1包含以下文件:

package project.package1;

public interface IThing {
}

final class Thing implements IThing {

    private int thingField;

    public int thingFieldGetter(){
        return thingField;
    }
}

package2有:

package project.package2;

import project.package1.IThing;

public interface IThingUser {

    public IThing someFunction(); // Works fine

    public Thing anotherFunction();
    // "Thing" is not recognized when the two files are in separate packages.
}

为什么会这样?有没有办法在保持这种架构的同时解决这个问题?

PS:我知道这种结构没有多大意义,但我没有编写package1代码,我必须按原样使用它。

2 个答案:

答案 0 :(得分:2)

问题是project.package1.Thing 在包 project.package1之外不可见,但公共类必须在自己的中定义文件

答案 1 :(得分:0)

Thing具有包私有可见性。您将无法在project.package1包裹之外访问它,直到它将被实现为

public final class Thing implements IThing