何时在匿名类中创建方法

Posted

技术标签:

【中文标题】何时在匿名类中创建方法【英文标题】:When to create a method inside anonymous class 【发布时间】:2015-11-16 21:42:57 【问题描述】:

在下面的代码中,我创建了按钮侦听器,当我尝试创建方法 on() 时,eclipse 建议将其创建为 OnClickListener 的一部分或 mainClass 的一部分。

在这两种情况下创建方法 on() 有什么区别,为什么应该是 protected

代码

private OnClickListener btnListenerOn = new OnClickListener() 

    @Override
    public void onClick(View v) 
        // TODO Auto-generated method stub
        on();
    
;
@Override
protected void onStart() 
    // TODO Auto-generated method stub
    super.onStart();
    Log.w(TAG, "@onStart.");


protected void on() 
    // TODO Auto-generated method stub


【问题讨论】:

【参考方案1】:

Encapsulation 是一个概念,可以引导您了解该方法的放置位置。封装可帮助您将实现细节隐藏在最有限的范围内,例如,当您需要更改实现时,您可以阻止 ripple effect。

在您的情况下,由于您可能不需要从您的OnClickListener 以外的任何其他地方调用on() 方法,因此这是放置它的正确位置。

在这种情况下,on() 方法应该是私有的,因为您永远不会扩展匿名 OnClickListener 类。如果您的侦听器不是匿名的,您可能需要声明方法 protected 以便您可以覆盖子类中的实现

【讨论】:

以上是关于何时在匿名类中创建方法的主要内容,如果未能解决你的问题,请参考以下文章

你能在 Swift 中创建匿名内部类吗?

java基础15 内部类(成员内部类局部内部类)和匿名内部类

在 Windows 中创建匿名管道

双括号初始化和“某种”静态匿名类

如何在kotlin中的匿名类中获取父类[重复]

复习 Python 匿名函数 内建函数