这是使用侦听器的更有效方法:使用匿名类或实现列表器

尚基班萨尔(Shanki Bansal)
class Rocket {

    public Rocket() {}

    public interface RocketListener {
        void RocketLaunched();
    }

    RocketListener listener;
    public void setRocketListener(RocketListener listener) {
        this.listener = listener;
    }

    //When rocket get launched.
    listener.RocketLaunched();
}


//first case : when implementing listner
class MyClass implements RocketListener {

    Rocket rocket = new Rocket();
    rocket.setRocketListener(this);

    @Override
    public void RocketLaunched() {
        //when rockect get launched. it get called
    }
}


//second case : when using anonymous class for listner
class MyClass {

    Rocket rocket = new Rocket();
    rocket.setRocketListener(new RocketListener() {

        @Override
        public void RocketLaunched() {
            //when rockect get launched. it get called
        }
    });
}  

第一种情况:当MyClass实现接口时,setOnClickListener()中的send参数是该类的实例。
在第二种情况下: setOnClickListener()中的send参数是匿名类。

问题1:在第二种情况下,匿名类是否拥有MyClass的引用?
问题2:在这两种情况下,在存储器上留下的指纹是什么?
问题3:哪种方法最适合使用,以提高性能或保留较少的内存?

尼古拉斯·阿尔伯特

内部类实例可以访问容器实例的内存。在名称冲突的情况下,您可以通过强制通过其类名称使用容器实例MyClass.this

答案1:是的

答案2:创建2个班级〜相同的指纹。在第一种情况下,侦听器类可以在其他地方重用。

答案3:一个内部类可以访问容器实例的属性和方法→非常有用,但是当可以在多个用法之间共享一个侦听器类时,它使用的类就更少了。最好的方法是分解更多代码的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaFX-哪种事件侦听器方法更有效?

来自分类Dev

在两个事件侦听器之间交替的更有效方法?

来自分类Dev

在两个事件侦听器之间交替的更有效方法?

来自分类Dev

使用 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么

来自分类Dev

如何在C#中使用匿名类重新实现Java侦听器

来自分类Dev

这是使用NSSet或Core Data的更有效的方法

来自分类Dev

什么时候应该使用匿名类来实现侦听器,何时可以选择其他实现?

来自分类Dev

Java动作侦听器:实现vs匿名类

来自分类Dev

与根本不删除事件侦听器相比,添加和删除事件侦听器是否更有效?

来自分类Dev

使用此方法比使用选择器更有效吗?

来自分类Dev

不使用匿名类添加操作侦听器会导致内存泄漏吗?

来自分类Dev

有没有更有效的方法来使用 C 为问答游戏创建计数器?

来自分类Dev

具有2个侦听器的Spring AMQP,仅一个侦听器有效

来自分类Dev

使用带有局部作用域变量的匿名函数删除事件侦听器

来自分类Dev

为什么“事件动画”(没有侦听器)在 A-Frame 0.6.1 中有效,而在 0.9.0 中无效?这是一个错误吗?

来自分类Dev

使用Handlebar.js模板将onclick事件侦听器添加到多个按钮中,只有最后一个有效

来自分类Dev

使用Java实现工作站锁定侦听器

来自分类Dev

使用WeakReferenced侦听器

来自分类Dev

对于Richfaces的a4j:ajax侦听器,JSF不是有效的方法表达式

来自分类Dev

使用列表理解或嵌套循环是否更有效?

来自分类Dev

如何获取当前的类名和使用testNg侦听器在类文件中执行的方法?

来自分类Dev

使用PHP处理应用类的更有效方法

来自分类Dev

使用PHP处理应用类的更有效方法

来自分类Dev

Javascript只有最后一个事件侦听器有效

来自分类Dev

使用索引Python删除列表项的更有效方法

来自分类Dev

使用索引Python删除列表项的更有效方法

来自分类Dev

使用适配器和数组列表时,我需要在回收视图中的项目上实现单击侦听器类

来自分类Dev

匿名侦听器类中的 Butterknife 绑定

来自分类Dev

同时使用列表和按钮的侦听器

Related 相关文章

  1. 1

    JavaFX-哪种事件侦听器方法更有效?

  2. 2

    在两个事件侦听器之间交替的更有效方法?

  3. 3

    在两个事件侦听器之间交替的更有效方法?

  4. 4

    使用 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么

  5. 5

    如何在C#中使用匿名类重新实现Java侦听器

  6. 6

    这是使用NSSet或Core Data的更有效的方法

  7. 7

    什么时候应该使用匿名类来实现侦听器,何时可以选择其他实现?

  8. 8

    Java动作侦听器:实现vs匿名类

  9. 9

    与根本不删除事件侦听器相比,添加和删除事件侦听器是否更有效?

  10. 10

    使用此方法比使用选择器更有效吗?

  11. 11

    不使用匿名类添加操作侦听器会导致内存泄漏吗?

  12. 12

    有没有更有效的方法来使用 C 为问答游戏创建计数器?

  13. 13

    具有2个侦听器的Spring AMQP,仅一个侦听器有效

  14. 14

    使用带有局部作用域变量的匿名函数删除事件侦听器

  15. 15

    为什么“事件动画”(没有侦听器)在 A-Frame 0.6.1 中有效,而在 0.9.0 中无效?这是一个错误吗?

  16. 16

    使用Handlebar.js模板将onclick事件侦听器添加到多个按钮中,只有最后一个有效

  17. 17

    使用Java实现工作站锁定侦听器

  18. 18

    使用WeakReferenced侦听器

  19. 19

    对于Richfaces的a4j:ajax侦听器,JSF不是有效的方法表达式

  20. 20

    使用列表理解或嵌套循环是否更有效?

  21. 21

    如何获取当前的类名和使用testNg侦听器在类文件中执行的方法?

  22. 22

    使用PHP处理应用类的更有效方法

  23. 23

    使用PHP处理应用类的更有效方法

  24. 24

    Javascript只有最后一个事件侦听器有效

  25. 25

    使用索引Python删除列表项的更有效方法

  26. 26

    使用索引Python删除列表项的更有效方法

  27. 27

    使用适配器和数组列表时,我需要在回收视图中的项目上实现单击侦听器类

  28. 28

    匿名侦听器类中的 Butterknife 绑定

  29. 29

    同时使用列表和按钮的侦听器

热门标签

归档