为什么在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;
}