zg18434886024 2018-10-30 13:13 采纳率: 50%
浏览 1337

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

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

  • 写回答

1条回答

  • JPF1024 2018-10-30 15:16
    关注

    试了一下确实可以运行,但在接口里面定义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;
        }
    
    评论

报告相同问题?