【问题标题】:Is this an anonymous Object being returned Here?这是在这里返回的匿名对象吗?
【发布时间】:2015-07-07 23:12:54
【问题描述】:

我正在浏览相机教程中的 Android 代码。我来自 C#/Obj-C/Swift 语言集,所以 Java 对我来说仍然是新的。我熟悉函数式编程,但我看到的这种语法本质上似乎并不实用(或者我错了)。

这是代码:

 button.setOnClickListener
        (
                new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {

                    }
                }
        );

new View.OnClickListener() 这行是我坚持的。 OnClickListener 是一个接口。所以我的问题是:是否 new View.OnClickListener() 创建了一个具有 OnClickListener 接口的匿名对象,并覆盖了 onClickView?

附:如果您也能给我这个“类型”代码的 Java 名称,我也将不胜感激。

【问题讨论】:

    标签: java android interface callback overriding


    【解决方案1】:

    如您所料,对new View.OnClickListener() {...} 的调用会实例化一个实现View.OnClickListener 的匿名类型的对象。此类的名称将由周围类的名称确定,并采用SurroundingClass$index 的形式。因此,如果这是MyClass 中的第一个匿名内部类,它将被称为MyClass$1

    【讨论】:

      【解决方案2】:

      是的,它创建了一个实现了该方法的匿名类。看看这个:Anonymous classes Oracle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2011-09-19
        • 2015-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多