Won’t inner class become top-level class if I put it into another Class file?
不,它仍然是一个内部类,文件名指示(IIRC它是OuterClass $InnerClass.class).
内部类可以访问外部类的属性,即它们依赖于它们的外部类’实例.使用界面,您无法做到这一点.想到一个完全不相关的类,必须由相应的外部类’实例创建.如果外部类不知道谁实现了该接口,那该怎么做?
您可以做的是在外部类中声明静态接口,因此仅将外部用作命名空间:
public class OuterClass {
public static interface InnerInterface { //protected and private would be fine too,depending on what makes sense
}
}
编辑:实际上,我误解了问题,因为界面是静态的,这里是一个更新的代码片段:
public class OuterClass {
public static InnerClass { //static inner class making OuterClass just be a namespace
public interface InnerInnerInterface { //protected and private would be fine too,depending on what makes sense
}
}
}
作为一种解决方法,您可以定义一个抽象内部内部类,其缺点是您必须坚持单个继承约束.