【问题标题】:Does local class of interface exist?是否存在本地接口类?
【发布时间】:2020-07-18 09:15:37
【问题描述】:

我们知道一个类的局部类是存在的(例如:一个类的方法里面的局部类),但是我们可以声明一个接口的局部类吗?我将本地类的原始格式重新格式化如下:

本地类(接口)是一个非静态成员类,它有自己的名字(本地名称),它可以在接口的默认/静态/私有方法中使用”。

那么,它的定义是否正确?因为当我尝试声明时,没有发生编译时错误。

请帮帮我,非常感谢

我举个例子如下:

public interface GlobalClass {
static void functionB() {
    class Local {}
    
};
default void functionC() {
    class Local {};
};}

这样说对吗?

【问题讨论】:

  • 我不明白。您在问是否可以在接口方法(静态和/或默认)中声明本地类?但是你通过提供编译好的代码来给出答案?
  • 这是正确的,这意味着在私有/默认/静态方法中定义的任何类,仅适用于该方法的范围,任何其他方法都无法访问。就像局部变量一样。
  • 这能回答你的问题吗? Inner class within Interface
  • @Ayush 内部类不是本地类。

标签: java local-class


【解决方案1】:

是的,您可以在任何方法体内创建本地类,也可以在接口的静态或默认方法中创建。您在接口的方法中创建的类与您在类方法中创建的本地类并没有真正的区别。

您的定义是正确的,只是在接口中声明的本地类和在类中声明的本地类之间并没有太大区别。

Oracle 教程中提供了有关本地课程的更多信息:https://docs.oracle.com/javase/tutorial/java/javaOO/localclasses.html

【讨论】:

  • 本地类和匿名类是两个不同的东西。本地类有名称,因此不是匿名的!
  • @Seelenvirtuose 是的,感谢您的注意,我误解了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 2011-02-16
  • 1970-01-01
  • 2014-03-01
  • 2019-01-23
  • 1970-01-01
相关资源
最近更新 更多