我是Java的新手,我正在使用新的API。我遇到了这个方法覆盖,我不确定这叫做什么:
public void exampleMethod() {
Button loginButton = new Button("login"){
public void onSubmit(){
//submit code here
}
};
}
据我所知,这将覆盖Button类的onSubmit方法。我以前从未遇到过这种压倒一切。它有特定的名称吗?我想了解更多关于它但我找不到它。到目前为止,我所有的搜索结果都是通过创建一个新类来定期覆盖,这是我已经熟悉的。
如果有人能指出我正确的方向,我会很感激。
感谢。
答案 0 :(得分:32)
在上面的示例中,我们不是创建扩展private class
的{{1}},而是创建Button的子类,并根据其余代码提供重写方法的实现。
由于这个新类是动态创建的,因此没有名称,因此匿名。因为它是在另一个类中定义的,所以它是一个匿名的内部类。
它可以是一个非常方便的快捷方式,特别是对于Button
类,但如果你被带走并且内联方法定义太长,它可能会使你的代码难以理解。
答案 1 :(得分:12)
那是anonymous inner class。基本上它创建了一个新类,它派生自指定的一个(在这种情况下为Button
,尽管您可以使用相同的技术来实现接口)并覆盖适当的方法。它也可以包含其他方法,但它们只能在该类中使用。
该类可以访问同一方法中的最终局部变量,如果您正在编写实例方法,它也会隐式引用this
(因此您可以调用“main”中的其他方法)类)。
答案 2 :(得分:7)
这是一个匿名的内部类。
更多信息:Anonymous classes