首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部类内接口时编译器错误

内部类内接口时编译器错误
EN

Stack Overflow用户
提问于 2015-05-06 18:37:24
回答 2查看 1.3K关注 0票数 0

我想在一个内部类中声明一个接口,它显示编译器错误消息“内部类不能有静态声明”。

代码语言:javascript
复制
public class Apple {       
    //...

    public class InnerApple{
    //...

        public interface InnerInterface{
            //Error: inner classes cannot have static declarations
        }
    }
}

这是否意味着Java中的接口实际上是静态的?

我正在使用Java1.7。谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-06 18:39:09

接口总是静态的--从某种意义上说,不可能有任何对另一个实例的依赖。

拥有两个级别的内部声明是非常罕见的,但是如果它是有意的,我希望至少InnerApple静态

代码语言:javascript
复制
public class Apple {       
  public static class InnerApple{

    public interface InnerInterface{
        //this does not cause an error
    }
  }
}

在大多数情况下,忽略了内部类的关键字静态。如果是这样的话,这个类可能包含对周围实例的依赖关系(而不仅仅是与静态内部类一样)。

票数 3
EN

Stack Overflow用户

发布于 2015-05-06 18:44:47

是的,成员接口是隐式的staticJLS第8.5.1节声明:

成员接口是隐式静态的(§9.1.1)。

为了使它不是静态的,接口必须是顶级的,没有封装类或接口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30084952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档