【问题标题】:Why compiler shows error when I declare interface in static block in java?java - 为什么在java的静态块中声明接口时编译器会显示错误?
【发布时间】:2023-12-16 22:06:02
【问题描述】:

例如

public class Test
{
  static
  {
    interface ITest
    {}
  }
}

这里接口 ITest 在静态块中声明... 目的是了解为什么会发生这种情况 接口本质上是静态的,那么为什么不能在静态块中声明它

================================================ =========================== 相反,我检查了以下情况,它没有显示错误。

public class Test
{

  interface ITest
  {}
}

如果有人真的能指出在一种情况下和第二种情况下没有错误的区别,那将是非常有帮助的。

【问题讨论】:

  • (这样做的意义/目的是什么?)
  • 它允许在*类中声明接口,例如 public class Test { interface ITest{} } 但它不允许在块中声明 public class Test { { interface ITest{} } } 什么是这两种情况有什么区别?
  • 好的,这是一个不同的问题。在第一种情况下,您只是在声明一个内部接口。在第二种情况下,您将接口声明放在只有可运行代码可以存在的地方。我不知道“运行”一个接口声明是什么意思;编译器也没有。

标签: java interface static-block


【解决方案1】:

在可执行代码块中不能有结构定义(类、接口、枚举、注释定义……)。 唯一的例外是内部类。

【讨论】:

    最近更新 更多