class 内的 main() 与接口内的 main()

main() inside a class vs. main() inside an interface

我的问题是接口内的 main() 是否比 class.

内的 main() 有任何优势
public interface Main {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}

Java 8 允许接口内的静态方法。

这是在接口中使用 main() 成为可能的唯一原因,而以前是不可能的。

吹毛求疵,接口中的 main 给它 access_flags ACC_INTERFACE 和 ACC_ABSTRACT (因为应该实现接口方法)。这意味着您也可以在 class 中实现 main(),造成混淆。

出于这个原因,加上使接口内的 main() 成为可能的偶然事件过程,我建议在 class.

内使用 main()

除此之外,在 class 或接口内使用 main() 没有区别。


接口中 main() 的可能好处

由于 main() 非常特定于程序,因此只有一个用例,如果有一个... Mainable 接口会很方便:debug。 给定一个足够通用的 main() 和适当的参数,您可以将它用作驱动程序来调试 classes,方法是将它们变为“Mainable”,一次一个,并节省时间避免为每个重写 main() class。您可以回收代码。

虽然它有点边界线并且可能不值得努力使所有 Mainable classes 与此 main() 兼容,但可以做到。这是一个可能性来说明。