这是在这里返回的匿名对象吗?
Is this an anonymous Object being returned Here?
我正在查看相机教程中的 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。如果您也可以告诉我这个 'type' 代码的 Java 名称,我也会很感激。
是的,它创建了一个已实现该方法的匿名 class。看看这个:Anonymous classes Oracle
如您所料,对 new View.OnClickListener() {...}
的调用实例化了一个实现 View.OnClickListener
的匿名类型的对象。此 class 的名称将由 周围 class 的名称确定,并将采用 SurroundingClass$index
的形式。因此,如果这是 MyClass
中的第一个匿名内部 class,它将被称为 MyClass
。
我正在查看相机教程中的 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。如果您也可以告诉我这个 'type' 代码的 Java 名称,我也会很感激。
是的,它创建了一个已实现该方法的匿名 class。看看这个:Anonymous classes Oracle
如您所料,对 new View.OnClickListener() {...}
的调用实例化了一个实现 View.OnClickListener
的匿名类型的对象。此 class 的名称将由 周围 class 的名称确定,并将采用 SurroundingClass$index
的形式。因此,如果这是 MyClass
中的第一个匿名内部 class,它将被称为 MyClass
。