我正在浏览相机教程中的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名称,我也会很感激。
答案 0 :(得分:1)
是的,它会创建一个已实现该方法的匿名类。看看这个:Anonymous classes Oracle
答案 1 :(得分:1)
正如您所猜测的,对new View.OnClickListener() {...}
的调用实例化了一个实现View.OnClickListener
的匿名类型的对象。此类的名称将由周围类的名称决定,并采用SurroundingClass$index
形式。因此,如果这是MyClass
中的第一个匿名内部类,则会将其称为MyClass$1
。