代码之家  ›  专栏  ›  技术社区  ›  Suvitruf - Andrei Apanasik

为什么我应该在Android中使用匿名类而不是重新定义类?

  •  7
  • Suvitruf - Andrei Apanasik  · 技术社区  · 11 年前

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

    他们说

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

    好于

       txtTitle.setOnClickListener(new MyOnClickListener(position));
       ...
    
    private class MyOnClickListener implements OnClickListener{
    ...
    }
    

    有人能解释一下为什么吗?

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

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

    2 回复  |  直到 11 年前
        1
  •  11
  •   kamituel    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.
            }
     });
    

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

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

        2
  •  3
  •   pskink    11 年前

    为什么不在“活动”类中实现OnClickListener?

    class MyActivity extends Activity implements OnClickListener