在我的应用程序中,有一个多次使用的抽象类,如下所示:
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/