方法定义作为参数传递

时间:2013-02-19 01:41:30

标签: java android methods arguments

我在查看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();
    }
}
在这做什么?它看起来像一个方法定义?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

正如@Perception所说,它是一个匿名的内部类。 btnCall.setOnClickListenter()期待一个类型为OnClickListener的参数。您可以实例化对OnClickListener的具体引用,并将其作为参数传递,但如果您再也不会再引用它,有时简单地创建一个匿名内部类更容易。