7

我是 Android 开发的新手。我读了一些关于它的书。并且所有作者都强烈建议使用匿名类而不是类重定义。

他们说

TextView txtTitle;
...
txtTitle.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {

   }
});

好于

   txtTitle.setOnClickListener(new MyOnClickListener(position));
   ...

private class MyOnClickListener implements OnClickListener{
...
}

谁能解释我为什么?

Ofc,如果我将为许多不同的对象使用重新定义类,这将是修改的问题。

但是如果我只对特定对象使用我自己的类,那么我的类的逻辑不会强烈改变,我可以使用它吗?或者我应该使用匿名类?

4

2 回答 2

11

匿名类将可以访问最终的外部变量,因此使用它可能更方便。例如:

 final String x = "123";
 Button button = (Button) findViewById(R.id.button);
 button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
                 // You can acces "x" here.
        }
 });

此外,这是编码风格的问题。使用匿名会导致代码更冗长,但同时也更容易理解。

此外,可以在多个地方实例化非匿名类。

于 2013-10-09T07:28:16.233 回答
3

为什么不在 Activity 类中实现 OnClickListener?

class MyActivity extends Activity implements OnClickListener
于 2013-10-09T08:00:58.350 回答