0

我在查看 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()作为参数传递给。我不明白的是里面的代码在{...}这里做什么?ifnew OnClickListener()调用构造函数,构造函数返回一个对象,是的,对象可以作为参数传递给方法,但是什么是:

{
    public void onClick(View v) {
        call();
    }
}

在这里做什么?它看起来像一个方法定义?

非常感谢您的帮助!

4

1 回答 1

0

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

于 2013-02-19T01:47:57.817 回答