Java:new AbstractClass(){}这个声明叫什么?

Java:new AbstractClass(){}这个声明叫什么?,java,abstract-class,Java,Abstract Class,在我的应用程序中,有一个抽象类,可多次使用,如下所示: public class Myclass{ int amount; String name; public void printResultsFromDB(){ new MyabstractClass(name){ @Override String getDataFromDB(){ //some implementatio

在我的应用程序中,有一个抽象类,可多次使用,如下所示:

public class Myclass{
    int amount;
    String name;
    public void printResultsFromDB(){
        new MyabstractClass(name){
            @Override
            String getDataFromDB(){
                //some implementation
            }
        };
    }
}

public abstract MyabstractClass{
    String name;
    public MyabstractClass(String name){
        this.name = name;
    }
    abstract String getDataFromDB();
    void execute(){
        //Some implementation
    }
}
我想知道代码中的第5行叫什么?
我知道我们不能实例化一个抽象类。此声明称为匿名类吗?

您没有实例化抽象类。它是一个扩展MyabstractClass的。它仍然必须提供任何抽象方法的实现


它适用于您希望为一个案例提供一些自定义实现,但不希望在其他任何地方重用它的情况。

这在Java中称为匿名类型。它允许您实现接口或扩展抽象类,而无需为其指定类

如果经常实现接口或抽象类,并且为每个实现创建一个新的类会导致混乱的类,那么这一点尤其有用。Java的
Runnable
接口就是一个很好的例子,它只允许将
void
方法传递给不带参数的方法


您可以在这里找到更多信息:

这是一个匿名类,允许您实现接口

从:

匿名类表达式由以下内容组成:

  • 新接线员
  • 要实现的接口或要扩展的类的名称。在本例中,匿名类正在实现接口
    地狱世界
  • 包含构造函数参数的括号,就像普通的类实例创建表达式一样。注意:当您 实现接口时,没有构造函数,因此使用 空括号对,如本例中所示
  • 一个主体,它是一个类声明主体。更具体地说,在主体中,允许方法声明,但不允许语句