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
方法传递给不带参数的方法
您可以在这里找到更多信息:这是一个匿名类,允许您实现接口 从: 匿名类表达式由以下内容组成:
- 新接线员
- 要实现的接口或要扩展的类的名称。在本例中,匿名类正在实现接口
地狱世界 - 包含构造函数参数的括号,就像普通的类实例创建表达式一样。注意:当您 实现接口时,没有构造函数,因此使用 空括号对,如本例中所示
- 一个主体,它是一个类声明主体。更具体地说,在主体中,允许方法声明,但不允许语句