我在查看Android示例时看到了这段代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editNumber;
Button btnCall = (Button) this.findViewById( R.id.btnCall);
editNumber = (EditText) this.findViewById(R.id.editNumber);
btnCall.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
call();
}
});
// ...
}
下面:
new OnClickListener() {
public void onClick(View v) {
call();
}
}
作为参数传递给setOnClickListener()
。我不明白的是{...}
里面的代码在这里做了什么?如果new OnClickListener()
调用构造函数,并且构造函数返回一个对象,是的,对象可以作为参数传递给方法,但是:
{
public void onClick(View v) {
call();
}
}
在这做什么?它看起来像一个方法定义?
非常感谢您的帮助!
答案 0 :(得分:0)
正如@Perception所说,它是一个匿名的内部类。 btnCall.setOnClickListenter()
期待一个类型为OnClickListener
的参数。您可以实例化对OnClickListener
的具体引用,并将其作为参数传递,但如果您再也不会再引用它,有时简单地创建一个匿名内部类更容易。