new关键字用在一个接口前面是怎么回事

MyInterface是一个接口,直接使用new关键字肯定要报错的,但是在方法里这用使用就不会报错,这是一种什么实现机制呢?

new MyInterface();

System.out.println(new MyInterface(){

});

接口不能被实例化,如:

----------------清单1----------------------

public interface Test {
public void doIt();

}


在测试类中语句:Test Tone = new Test();就是错的。

而如果写成:

-----------------清单2----------------------

Test Tone = new Test(){
public void doIt(){
System.out.print("--------");
}
};


就是可以的,因为在清单2中的代码实际上new了一个匿名内部类 ,而且这个匿名内部类 实现了Test接口 。

创建匿名类啊,大哥