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

标签 java abstract-class

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

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行叫什么? 我知道我们无法实例化抽象类。这个声明称为匿名类吗?

最佳答案

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

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

您可以在这里找到更多相关信息:http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

关于Java: new AbstractClass(){} 这个声明叫什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369416/

相关文章:

java - MySQL 触发器通过直接插入工作,但在通过 Hibernate 提交时不工作

java - Java汉诺塔时间分析

oop - 在 Dart 中什么时候使用 mixins 以及什么时候使用接口(interface)?

mocking - 使用 Rhino 模拟抽象类的默认行为

java - "no default constructor available in abstract class"

C# 抽象 Dispose 方法

java - 在字符串数组中添加数字 - android

java - 是 equals() 和 toHashCode 影响 vector add() remove() 方法的行为

java - 下载使用加载微调器的网页源代码

C++ 在基类本身中重写基类的抽象方法?