pac*_*low 3 java syntax class instantiation abstract
我正在更改我们的Java类,我注意到以下代码行:
OurClass<OurInterface1> ourClass = new OurClass<OurInterface1>() {};
Run Code Online (Sandbox Code Playgroud)
我对这一行感到奇怪的是,这OurClass是一个抽象类 - 这里的定义是OurClass:
public abstract class OurClass<T extends OurInterface1> implements OurInterface2<T>
Run Code Online (Sandbox Code Playgroud)
当我删除{}行尾时,Eclipse告诉我Cannot instantiate the type OurClass<OurInterface1>,但是当我放{}回去时,一切都很好.
如何{}允许您实例化一个抽象类?
添加{}介绍了匿名内部类的语法.
匿名类表达式包含以下内容:
新的运营商
要实现的接口的名称或要扩展的类.在此示例中,匿名类正在实现接口HelloWorld.
括号,包含构造函数的参数,就像普通的类实例创建表达式一样.注意:实现接口时,没有构造函数,因此您使用一对空括号,如本例所示.
身体,是一个类声明体.更具体地说,在正文中,方法声明是允许的,但语句不是.
您正在声明一个子类的匿名内部类OurClass.这个班级的主体是空的:{}.这个匿名内部类不是abstract,所以你可以实例化它.
当你删除它时{},编译器认为你是直接实例化OurClass一个abstract类,所以它不允许它.
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |