Java中调用的这种类型的方法重写是什么?

2022-09-01 02:06:55

我对Java比较陌生,我正在使用一个新的API。我遇到了这种方法覆盖,我不确定这叫什么:

public void exampleMethod() {
    Button loginButton = new Button("login"){
       public void onSubmit(){
          //submit code here
       }
    };
}

据我所知,这是重写 Button 类的 onSubmit 方法。我以前从未遇到过这种类型的覆盖。它有具体的名字吗?我想阅读更多关于它的信息,但我找不到它。到目前为止,我的所有搜索都通过创建一个新类来覆盖常规方法,这是我已经熟悉的。

如果有人能为我指出正确的方向,我将不胜感激。

谢谢。


答案 1

这是一个匿名的内部类

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

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

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


答案 2

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

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


推荐