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

标签 android inner-classes anonymous-class

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

他们是这样说的

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

   }
});

优于

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

private class MyOnClickListener implements OnClickListener{
...
}

谁能解释一下为什么?

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

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

最佳答案

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

 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.
        }
 });

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

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

关于android - 为什么我应该在 Android 中使用匿名类而不是类重定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19265626/

相关文章:

java - 在 Java 中设计规则引擎的有效设计模式/风格是什么?

java - 如何让 Sprite 在屏幕两侧反弹

java - Android:如何从 MainActivity 转到 Surfaceview

java - 从 Intent 返回后执行代码

java - 为什么这个应用程序中的 Toast 不显示任何内容?

c++ - 如何设计一个始终是另一个类的成员的类

c# - 为什么这段代码要用 long 代替 float 呢?

java - 这个实现会被称为匿名类吗?

c# - 内部类对象到外部类构造函数到c#

Java:按需重写方法