接口中的main方法是怎么回事,有没有大神解释下?

为什么在jdk1.8环境下,接口中可以写mian方法,并且还可以运行?而且在eclipse中运行出现以下界面,请问是什么意思?
图片说明

试了一下确实可以运行,但在接口里面定义main方法显得太奇怪了。

你图片下面的InterfaceDemo$1是InterfaceDemo编译匿名内部类。

 /**
 * @author puruidong
 * @version 2018/10/30 23:09
 */
public interface InterfaceMain {

    /**
     * 可以运行.
     *
     * @param args
     */
    static void main (String[] args){
        System.out.println("interface");
    }

    /**
     * 不能运行.
     *
     */
    static void main (){
        System.out.println("interface");
    }

    /**
     * 默认方法.可以参考{@link java.util.Map#getOrDefault}
     *
     */
    default void abc(){

    }
}

只有jdk 8中可以这么做。

普通方法可以用default修饰,具体参考java.util.Map类的实现.

如下:

 default V getOrDefault(Object key, V defaultValue) {
        V v;
        return (((v = get(key)) != null) || containsKey(key))
            ? v
            : defaultValue;
    }