代码之家  ›  专栏  ›  技术社区  ›  potato

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

  •  0
  • potato  · 技术社区  · 7 年前

    我有两个包裹。第一个包含一个空接口和一个在单个文件中实现它的类(“ithing”和“thing”)。第二个接口包含另一个接口(“ithinguser”),该接口具有返回“thing”类型的对象的函数。

    当两个文件都是同一个包的一部分时,一切都可以正常工作,但是如果它们位于两个单独的包中,则包2中的一个文件无法访问第一个包中定义的类。

    包1包含以下文件:

    package project.package1;
    
    public interface IThing {
    }
    
    final class Thing implements IThing {
    
        private int thingField;
    
        public int thingFieldGetter(){
            return thingField;
        }
    }
    

    包装2有:

    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.
    }
    

    为什么会这样?在保留此体系结构的同时,是否有解决此问题的方法?

    附言:我知道这个结构没有多大意义,但我没有编码package1,我必须按原样使用它。

    2 回复  |  直到 7 年前
        1
  •  2
  •   howlger df778899    7 年前

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

        2
  •  0
  •   SeniorJD    7 年前

    等级 Thing 具有包私有可见性。你不能在外面进入它 project.package1 包,直到它被实现为

    public final class Thing implements IThing
    
    推荐文章