当前位置: 首页 > 面试题库 >

为什么允许Java 8中的接口具有main方法?

百里芷阳
2023-03-14
问题内容

为什么main在Java 8中允许接口具有方法?

如下面的代码所述,它可以正常工作并正确产生输出。

public interface Temp {
    public static void main(String args[]){
         System.out.println("Hello");
    }
}

目前它的行为就像一个类,我已经interface用main方法执行了。

我们为什么需要这个?


问题答案:

从Java 8开始,接口中允许使用静态方法。

main()是静态方法。

因此,在接口中允许main()。

我们 不需要
它,因为以前不允许这样做,但是我们幸存了下来。但是,根据定义,由于静态方法不是绑定到类的实例,而是绑定到类本身,因此在接口中允许它们是有意义的。它允许Collections在接口本身而不是单独的类中定义与接口相关的实用程序方法(例如,例如在中找到的方法)。

类静态方法和接口静态方法之间没有区别。



 类似资料:
  • 虽然有些人曾经问过这个问题,但那是在Java8发布之前。 以前,静态成员是不允许的,因为实现细节不能在接口中定义。这也是为什么任何东西都不应该是私有的,因为接口的实现者需要提供实现细节。 Java8改变了这种情况,不是吗?默认方法定义实现细节,静态方法也是如此。那么,为什么仍然不允许这样做呢?

  • 谁能告诉我在java中使main方法成为final的用途。

  • 我们举个例子: 一个常见的解决方案是转移到一个抽象类,但是在我的具体案例中,我有一个枚举的接口,所以在这里不适用。我想这不是被忽略了,就是因为接口背后的原始想法,即它们是可用方法的“契约”,但我想我需要关于这是怎么回事的输入。 我读过“为什么Java 8接口方法中不允许使用”final“?”,其中说: 默认方法的基本思想是:它是具有默认实现的接口方法,派生类可以提供更具体的实现 与关联问题一样,由

  • 问题内容: Java 8最有用的功能之一是接口上的新方法。引入它们的原因基本上有两个(可能还有其他原因): 提供实际的默认实现。例: 允许JDK API演进。例: 从API设计人员的角度来看,我希望能够在接口方法上使用其他修饰符,例如。在添加便捷方法时,这将很有用,以防止在实现类时“意外”覆盖: 如果已经上过课,以上是已经很普遍的做法: 现在,并且显然是相互矛盾的关键字,但是默认关键字本身并没有严

  • 为什么Java不允许在接口中使用私有成员?有什么特别的原因吗?

  • 但是为什么一个函数接口应该只有一个抽象方法呢?如果接口有多个抽象方法,为什么这不是函数接口?