我们可以从一个具体的类创建一个匿名的内部类吗



下面的代码中有一些令人惊讶的地方。ListCell类不是抽象的,但我们能够从中创建一个匿名类并覆盖其方法!这怎么可能?

ListCell<TodoItem> listCell = new ListCell<>() {
@Override
public void updateIndex(int i) {
super.updateIndex(i);
}
};

匿名类的概念(参见JLS,§15.9.5(与抽象类无关/仅限于抽象类。

new ListCell<>() {}创建ListCell的子类(具有合成名称(的实例。除非父类是最终类,否则子类是可能的。子类可以覆盖父类中的方法,除非它们是最终的。

最新更新