Java 这里返回的是匿名对象吗?

Java 这里返回的是匿名对象吗?,java,android,interface,callback,overriding,Java,Android,Interface,Callback,Overriding,我正在学习相机教程中的Android代码。我来自一个C#/Obj-C/Swift语言集,所以Java对我来说仍然是新的。我熟悉函数式编程,但我看到的这种语法在本质上似乎不起作用(也许我错了) 代码如下: button.setOnClickListener ( new View.OnClickListener() { @Override

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

代码如下:

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

                    }
                }
        );
newview.OnClickListener()
就是我一直坚持的内容。OnClickListener是一个接口。所以我的问题是:是新视图吗?OnClickListener()创建一个具有OnClickListener接口的匿名对象,并覆盖onClickView吗?


另外,如果您能告诉我这个“类型”代码的Java名称,我也会非常感激。

是的,它创建了一个实现了该方法的匿名类。检查一下:

正如您所猜测的,对
新视图.OnClickListener(){…}
的调用实例化了一个匿名类型的对象,该对象实现了
视图.OnClickListener
。该类的名称将由周围类的名称决定,并将采用
环绕类$index
的形式。因此,如果这是
MyClass
中的第一个匿名内部类,它将被称为
MyClass$1