android中接口为什么可以这么写?

ware1212 2015-05-13 12:27:23
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或者匿名内部类直接赋值,前面是我见过的,用过的,这个用法,该如何解释?求指导啊。。。
...全文
229 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ware1212 2015-05-13
  • 打赏
  • 举报
回复
确实可以啊,谢谢了。
ware1212 2015-05-13
  • 打赏
  • 举报
回复
ware1212 2015-05-13
  • 打赏
  • 举报
回复
qq_24561391 2015-05-13
  • 打赏
  • 举报
回复
开发者_android 2015-05-13
  • 打赏
  • 举报
回复
接口本身是无法实例化的,new的形式其实就相当于创建一个实现了这个接口的类对象,必须实现接口中的方法,只不过,这个new出来的对象是匿名的。
windfury_plus 2015-05-13
  • 打赏
  • 举报
回复
并不违反,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接口就是获得一个匿名内部类

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧