在Java中调用的这种方法覆盖是什么?

37 java overriding anonymous-inner-class

我是Java的新手,我正在使用新的API.我遇到了这个方法覆盖,我不确定这是什么叫:

public void exampleMethod() {
    Button loginButton = new Button("login"){
       public void onSubmit(){
          //submit code here
       }
    };
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这将覆盖Button类的onSubmit方法.我以前从未遇到过这种压倒一切.它有特定的名称吗?我想了解更多关于它但我找不到它.到目前为止,我所有的搜索结果都是通过创建一个新类来定期重写,这是我已经熟悉的.

如果有人能指出我正确的方向,我会很感激.

谢谢.

Dav*_*ebb 34

这是一个匿名的内部阶级.

在上面的示例中,我们不是创建private class扩展,Button而是创建Button的子类,并根据其余代码提供重写方法的实现.

由于这个新类是动态创建的,因此它没有名称,因此是匿名的.因为它是在另一个类中定义的,所以它是一个匿名的内部类.

它可以是一个非常方便的快捷方式,特别是对于Listener类,但如果你被带走并且内联方法定义太长,它可能会使你的代码很难遵循.


Jon*_*eet 12

这是一个匿名的内部阶级.基本上它创建了一个从指定的类派生的新类(Button在这种情况下,虽然您可以使用相同的技术来实现接口)并覆盖适当的方法.它也可以包含其他方法,但它们只能在该类中使用.

该类可以访问同一方法中的最终局部变量,如果您正在编写实例方法,它也有一个隐式引用this(因此您可以调用"main"类中的其他方法).


Jes*_*per 7

那是一个匿名的内部阶级.

更多信息:匿名课程