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

Can we create an anonymous inner class from a concrete class?

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

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

匿名classes的概念(cf.JLS, §15.9.5)根本就不是related/restricted抽象classes.

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