这是匿名对象吗?

时间:2015-04-28 21:55:33

标签: java android interface callback override

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

这是代码:

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

                    }
                }
        );

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

P.S。如果你也可以给我这个'类型'代码的Java名称,我也会很感激。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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