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

Suv*_*ica 7 android anonymous-class inner-classes

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

他们说

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

   }
});
Run Code Online (Sandbox Code Playgroud)

比...更好

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

private class MyOnClickListener implements OnClickListener{
...
}
Run Code Online (Sandbox Code Playgroud)

谁能解释一下为什么?

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

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

kam*_*uel 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.
        }
 });
Run Code Online (Sandbox Code Playgroud)

另外,这是编码风格的问题.使用匿名可以导致代码更冗长,但同时更容易理解.

此外,非匿名类可以在多个位置实例化.