android中接口为何可以这么写

android中接口为什么可以这么写?
Button bn = new Button(this);
bn.setText(R.string.ok);
bn.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
layout.addView(show);
layout.addView(bn);
bn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
show.setText("Hello , Android," + new java.util.Date());
}
});
setContentView(R.layout.activity_main);
这段代码很简单,可以理解。但我不理解的是OnClickListener是一个接口,实现这个接口不用implements?接口后加括号,不就意味着这是一个构造器吗?接口怎么可以通过构造器实例化呢??小弟现在是android的初学者,难道android可以违背java的语法?接口的实现一个是lambda表达式还有直接implements或者匿名内部类直接赋值,前面是我见过的,用过的,这个用法,该如何解释?求指导啊。。。
------解决思路----------------------
并不违反,java本身就可以直接new接口
接口本身只是一个没实现的类,所以和其他类一样可以new,接着你去实现它

//接口类
public interface IMyClick {
void onclick();
}


public class MyClass {

public static void main(String[] args) {

new IMyClick(){
@Override
public void onclick() {
// TODO Auto-generated method stub
}
};
}
}

implement更方便扩展而已,new接口就是获得一个匿名内部类
------解决思路----------------------
接口本身是无法实例化的,new的形式其实就相当于创建一个实现了这个接口的类对象,必须实现接口中的方法,只不过,这个new出来的对象是匿名的。