我想在内部类中声明一个接口,它显示编译器错误消息"内部类不能有静态声明"。
public class Apple {
//...
public class InnerApple{
//...
public interface InnerInterface{
//Error: inner classes cannot have static declarations
}
}
}
这是否意味着接口在Java中实际上是静态的?
我正在使用Java 1.7。谢谢!
答案 0 :(得分:3)
接口始终是静态的 - 从某种意义上说,它不能依赖于另一个实例。
有两个级别的内部声明是非常罕见的,但如果它是预期的,我希望至少InnerApple
静态:
public class Apple {
public static class InnerApple{
public interface InnerInterface{
//this does not cause an error
}
}
}
在大多数情况下,省略了内部类的关键字 static 。如果是这样,这个类可能包含对周围实例的依赖(而不仅仅是作为静态内部类的类)。
答案 1 :(得分:1)